我正试图将标题变成
$string = "آزمون پادشاهی متحده";
$pattern = '/[`~!@#$%^&*()_|+\=?;:..’“\'"<>,€£¥•،٫؟»«\{\}\[\]\\\/]+/gi';
$replacement = '';
$slug = trim(preg_replace($pattern, $replacement, $string));
$slug = str_replace(" ","-",$slug);
最终结果应该是آزمون-پادشاهی-متحده
个空格,并用连字符替换。
另一个例子
标题:Great Britain
sl:great-britain
我该如何解决?
答案 0 :(得分:3)
您需要在此处应用以下修复程序:
'\\\\'
g
修饰符,因为PHP preg_replace
不支持该修饰符(默认情况下它将替换输入中所有出现的修饰符)u
修饰符,以使PCRE引擎能够同时解析模式和输入为Unicode字符串。使用
$string = "آزمون پادشاهی متحده";
$pattern = '/[`~!@#$%^&*()_|+=?;:..’“\'"<>,€£¥•،٫؟»«{}[\]\\\\\/]+/ui';
$replacement = '';
$slug = trim(preg_replace($pattern, $replacement, $string));
$slug = str_replace(" ","-",$slug);
echo $slug;
请参见PHP demo。
请注意,[
,=
,{
和}
在字符类中不是特殊字符,不需要转义。