我有一些标题,例如:
should? be fenêtre!
ﻟﻔﺮﻧﺴﻴﺔ-تعاني!!!
我可以使用什么正则表达式来删除特殊字符,例如:?,!,^
我需要获得这样的标题:
should-be-fenêtre
ﻟﻔﺮﻧﺴﻴﺔ-تعاني
我试过
$name = preg_replace("~[\x00-\x2F\x3A-\x40\x5B-\x60\x7B-\x7F]+~", "-", $name);
但是我得到了
Warning: preg_replace(): No ending delimiter '~' found in
由于
答案 0 :(得分:3)
您可以使用几个正则表达式去除任何不是字母或数字的内容,并将空格和短划线的运行压缩为一个短划线:
// Replaces every non-letter, non-digit with a dash
$str = preg_replace('/(?=\P{Nd})\P{L}/u', '-', $str);
// Replaces runs of whitespace and dashes with a single dash
$str = preg_replace('/[\s-]{2,}/u', '-', $str);
答案 1 :(得分:0)
试试这个:
$text = preg_replace("/(?![.=$'€%-])\p{P}/u", "", $text);
只需更改断言以匹配您要保留的任何Unicode字符。