我有这个功能来爆炸句子中的单词:
function explode_words($input_string='')
{
$keywords = preg_split("/[\s,]+/", $input_string); //Here REGEX
return $keywords; // as array
}
我举一个例子:
$input_string = 'Pokok < getah < > sumber asli! yang bernilai . Banyak produk guna getah ?';
爆炸的单词将是:
Array
(
[0] => Pokok
[1] => <
[2] => getah
[3] => <
[4] => >
[5] => sumber
[6] => asli!
[7] => yang
[8] => bernilai
[9] => .
[10] => Banyak
[11] => produk
[12] => guna
[13] => getah
[14] => ?
)
如何排除~!@#$%^&*()_+{}|:"<>?'
等所有特殊字符?
单词asli!
应仅返回asli
。
任何帮助将不胜感激。 谢谢,周一过得愉快!
答案 0 :(得分:1)
您可以使用类似"/[^\p{L}]+/"
的内容来分割字符串。
function explode_words($input_string = "") {
return preg_split("/[^\p{L}]+/u", $input_string, null, PREG_SPLIT_NO_EMPTY);
}
\p{L}
是一个Unicode类别,包括小写,大写等字母字符(您可以将其视为[a-zA-Z]
的扩展版本,其中包含来自世界上大多数字母表的字符)。< / p>
[^...]
部分表示&#34;此组中的任何不&#34;。
答案 1 :(得分:0)
可能更容易指定您需要保留的内容,
preg_split("/[^a-zA-Z]+/", $input_string, NULL, PREG_SPLIT_NO_EMPTY);
在此示例中,a-z和A-Z是允许范围。您可以根据需要进行更改。