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

如何在php中用空格替换所有非字母数字字符?,php,regex,nlp,Php,Regex,Nlp,这不是用空格替换所有非(A-Z、A-Z、A-o-u和umlauts)字符吗? 我和乌姆劳特失去了zugänglich等词 正则表达式有什么问题吗 编辑: 我用preg_replace替换了ereg_replace,但不知何故,特殊字符如:,?没有被空格替换…也许,您的UMLAUT仍然是html实体(ä;等),其中包含非字母数字字符,将被删除 顺便说一句:字母数字不仅仅是a-Z,还有数字…正则表达式应该是/[^a-Za-Zä196;ÜÖö]+//code>如果你的方法成功,首先取决于编码。

这不是用空格替换所有非(A-Z、A-Z、A-o-u和umlauts)字符吗? 我和乌姆劳特失去了zugänglich等词

正则表达式有什么问题吗

编辑:


我用preg_replace替换了ereg_replace,但不知何故,特殊字符如:,?没有被空格替换…

也许,您的UMLAUT仍然是html实体(ä;等),其中包含非字母数字字符,将被删除


顺便说一句:字母数字不仅仅是a-Z,还有数字…

正则表达式应该是
/[^a-Za-Zä196;ÜÖö]+//code>如果你的方法成功,首先取决于编码。当所有UMLAUT被剥离时,很可能您的源文本(或php脚本)被编码为UTF-8

在这种情况下,请使用:

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

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

为什么不使用preg_split,并将
[^A-Za-zääÜÖö]
模式放在那里?另外,
ereg\u replace
从5.3.0开始就不推荐使用,所以我不会使用它。
ereg\u replace()
从5.3开始就不推荐使用,最好
使用preg\u replace()
$text = preg_replace('/[^\p{L}]/u', " ", $text);