preg_replace除了字母数字和重音之外的所有内容

时间:2013-10-24 19:08:06

标签: php preg-replace diacritics

一直在寻找,但由于我不明白可以输入的preg-replace参数,我无法通过查看类似的问题来解决我的问题。 (因此我想问你能解释一下你答案中的每个标志吗?)

我想过滤一个字符串并替换所有非字母数字或带空格的重音。 (在此之后我使用preg_split来制作它们的列表)。

在这里,我称为重音符号,仅显示小写,但也想保留大写变体。(可能已经忘记了一些)。我真的需要左边的标志。权利不是强制性的:

é è ë ï ê                ç ü ö ä ú ó á ã õ ñ å û â ô

我需要这个,因为我必须搜索我的数据库(准备好的语句)。

目前我使用:

 $terms=preg_split('/\s+/', preg_replace('/[^a-zA-Z0-9À-ÿ]+/', ' ', $_GET['ter']));

但是下面的例子显示它没有留下符号:

url example: mydomain.com/index.php?ter=léopold

$terms=preg_split('/\s+/', preg_replace('/[^a-zA-Z0-9À-ÿ]+/', ' ', $_GET['ter']));
foreach ($erms as $term){echo " term: ".$term;}


Outputs:
term: l� term: opold

What i want it to be:
term: léopold

所以我需要创建一个不会损害重音符号的preg_replace,尤其是第一个代码块左侧写的重音符号

1 个答案:

答案 0 :(得分:1)

使用带有多字节支持的mb_ereg_replace,preg_replace