preg_match("/\w+/", $s, $matches);
我有上面的PHP代码。我用它来匹配字符串中的单词。除了一个案例外,它的效果很好。
示例:
'This is a word'
应与{'This','is','a','word'}
'Bös Tüb'
应与{'Bös','Tüb'}
第一个例子有效,但第二个没有。相反,它会返回{'B','s','T','b'}
,但它不会将ö
和ü
视为单词字符。
问题
如何匹配ö和ü以及通常在名称中使用的任何其他字符(它们可能很奇怪,这是关于德语和土耳其语的名字)?我应该手动添加它们(/[a-zA-Z and all others as unicode]/
)吗?
修改 的
正如我所说的那样,在单词之间有很多\n
,\r
和' '
个字符。这就是我使用正则表达式的原因。
答案 0 :(得分:3)
您可以使用u
修饰符来处理Unicode字符。然后使用utf8_decode()
解码匹配。
$s = 'Bös Tüb';
preg_match("/\w+/u", $s, $matches); // use the 'u' modifier
var_dump(utf8_decode($matches[0])); // outputs: Bös
答案 1 :(得分:0)
如果你需要按空格分开,你可以使用php explode func,如:
$some_string = 'test some words';
$words_arr = explode(' ', $some_string);
var_dump($words_arr);
无论字符串中的字符是什么,脚本都能正常工作。
编辑: 你可以尝试:
preg_match("/\w+/u", $s, $matches);
用于unicode。