preg_match 土耳其语等特殊字符

preg_match special character like Turkish and other

我正在使用以下代码来获得 url 匹配项,但是当我使用一些特殊字符(例如土耳其语)时 ülkeaşk 然后我无法获得任何请求。但是如果我使用 ulkeask 那么我可以得到结果。

谁能告诉我这是什么问题?

$request_uri = 'https://www.weburl.com/hashtag/ulke'; // working fine
$request_uri = 'https://www.weburl.com/hashtag/ülke'; // no result

if (preg_match('~/(hashtag)/([[\w.-]+)~', $request_uri, $match)) {
   $pageFor = $match[2];
}

您可能需要使用 u 修饰符来告诉 preg_match 将字符串视为 UTF-8:

https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

$request_uri = 'https://www.weburl.com/hashtag/ülke';

if (preg_match('~/(hashtag)/([[\w.-]+)~u', $request_uri, $match)) {
   $pageFor = $match[2];
}

echo $pageFor; //ülke