如何从中过滤不可识别的字符?

时间:2011-01-27 16:29:15

标签: php regex

我以前曾问过此问题,但无法找到答案/答案。

我有这样的标签..

news,门户,æ–°é—»,portal,网易,163,china,门户ç

我需要从上面仅提取news,portal,163,china。我怎么能在PHP中做到?

4 个答案:

答案 0 :(得分:2)

替换任何不是字母或逗号的内容:

$sString = preg_replace('/[^a-z0-9,]+/i', '', $sString);
$sString = preg_replace('/,{2,}/', ',', $sString);

答案 1 :(得分:2)

假设您只想保留此字符串的ascii字母数字部分,以下代码将起作用:

$str = explode(',', $str);
$str = preg_grep('#^[[:alnum:]]+$#', $str);
$str = implode(',', $str);

这也是:

$str = preg_replace('#(^([^[:alnum:],]+,)+|,[^[:alnum:],]+)#', '', $str);

两者都返回news,portal,163,china

答案 2 :(得分:0)

echo str_replace(',,', ',', preg_replace('~[^a-zA-Z0-9,]~i', '', $searchString));

答案 3 :(得分:0)

s/([[:alnum:]\ ]+,?|) .*? ([[:alnum:]\ ]+,?|) /$1$2/xsg

s/[\x{80}-\x{1fffff}]+,?//g