我有一个字符串:
$str = " Côte-d'azure ! (3000) limousin - limousine ";
我需要提取一些单词并将它们放在一个数组中。最后得到:
array (
0 => "Côte-d'azure",
1 => "limousin",
2 => "limousine"
);
所以我试过了:
preg_match_all("/[a-zA-Z]+/", $str, $all);
但忽略特殊字符ô,'和 -
请任何建议?
答案 0 :(得分:1)
使用Unicode模式u
和character properties:
preg_match_all('/\p{L}[\p{L}\\\\\'-]+/u', mysql_real_escape_string($str), $all);
这需要一个(Unicode)字母,然后尽可能多地匹配其他Unicode字母,反斜杠,连字符和撇号。如果您希望其他标点字符不分隔单词,请将其包含在字符类中。
注意5个反斜杠。编译字符串时会删除三个反斜杠,因为其中两个反转后跟反斜杠,最后一个反转'
。所以正则表达式引擎只收到2个反斜杠。这些被正则表达式引擎解释为一个字面反斜杠。不幸的是,在使用PHP时,没有办法使用少于4个反斜杠来表示一个字面反斜杠。
答案 1 :(得分:0)
试
if (preg_match('/[^a-zA-Z0-9]+/', $your_string, $matches))
{
echo ' symbol encountered !!';
}