如何用PHP中的空格替换所有非字母数字字符?

时间:2011-04-05 10:48:53

标签: php regex nlp

$html=strip_tags($html);
$html=ereg_replace("[^A-Za-zäÄÜüÖö]"," ",$html);
$words = preg_split("/[\s,]+/", $html);

这不会用空格替换所有非(A-Z,a-z,带有变音符号的字符)字符吗? 我正在丢失zugänglich等字母与变音符号

正则表达式有什么问题吗?

编辑:

我用preg_replace替换了ereg_replace但是某些特殊字符如:,®没有被空格替换......

3 个答案:

答案 0 :(得分:3)

如果您的方法成功,首先取决于编码。当所有变形金刚被剥离后,你的源文本(或php脚本)很可能被编码为UTF-8。

在这种情况下,请使用:

$text = preg_replace('/[^\p{L}]/u', " ", $text);

这将匹配所有字母字符,而不仅仅是变音符号。并/u解决了您可能遇到的字符集问题。

答案 1 :(得分:0)

也许,你的变音符号仍然是包含非字母数字字符的html-entities(& auml;等),将被删除......

顺便说一句:字母数字不只是a-Z而是数字......

答案 2 :(得分:0)

正则表达式应为/[^A-Za-zäÄÜüÖö]+/