如何使用正则表达式替换字符串中仅包含特殊字符的单词

时间:2016-12-26 10:17:04

标签: php preg-replace preg-match

我有一个字符串,我需要搜索并替换其中只包含特殊字符的单词。不,任何其他信件 例如(@@#$$,%^& %% $,&(){}":??)。

2 个答案:

答案 0 :(得分:0)

<强>功能

function clean($string) {
   $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
   $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.

   return preg_replace('/-+/', '-', $string); // Replaces multiple hyphens with single one.
}

<强>用法:

echo clean('a|"bc!@£de^&$f g');

code link

答案 1 :(得分:0)

我认为&#34;字&#34;只包含特殊字符的是非空白符号的块,这些符号不是字符(字母/数字/下划线)。

这意味着您可以使用空格(使用preg_split('~\s+~', $s))拆分字符串,除去所有仅包含非单词字符(使用preg_grep('~^\W+$~', $arr, PREG_GREP_INVERT))的块,然后将其与一个块连接起来空间:

$s = "''' Dec 2016, ?!$%^ End '''";
$result = implode(" ", preg_grep('~^\W+$~', preg_split('~\s+~', $s), PREG_GREP_INVERT));
echo $result;

请参阅PHP demo