$url = "https://example.com/folder-name/dien-hy-cong-luoc-story-of-yanxi-palace-5b5964935583202d2beff315.html#id-41";
preg_match("/^.+-([^.-]+)\.html#id-(\d+)/", $url, $matches);
print_r($matches);
Output:
Array
(
[0] => https://example.com/folder-name/dien-hy-cong-luoc-story-of-yanxi-palace-5b5964935583202d2beff315.html#id-41
[1] => 5b5964935583202d2beff315
[2] => 41
)
Explanation:
/ : regex delimiter
^ : beginning of line
.+ : 1 or more any character but newline
- : a dash
([^.-]+) : group 1, 1 or more any character that is not a dot or dash
\. : a dot
html#id- : literally
(\d+) : group 2, 1 or more digits
/