1

我有一些标题,例如:

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

谢谢

4

2 回答 2

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);
于 2013-02-04T20:53:05.307 回答
0

尝试这个:

$text = preg_replace("/(?![.=$'€%-])\p{P}/u", "", $text);

只需更改断言以匹配您想要保留的任何 Unicode 字符。

于 2013-02-04T20:38:30.553 回答