0

我有一个字符串:

$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);

但这忽略了特殊字符ô , '-

请任何建议?

4

2 回答 2

1

使用 Unicode 模式u字符属性

preg_match_all('/\p{L}[\p{L}\\\\\'-]+/u', mysql_real_escape_string($str), $all);

这需要一个 (Unicode) 字母,然后匹配尽可能多的其他 Unicode 字母、反斜杠、连字符和撇号。如果您希望其他标点字符不分隔单词,请将其包含在字符类中。

请注意,5 个反斜杠。编译字符串时会删除三个反斜杠,因为其中两个转义了后面的反斜杠,最后一个转义了'. 所以正则表达式引擎只接收 2 个反斜杠。这些被正则表达式引擎解释为一个文字反斜杠。不幸的是,在使用 PHP 时,没有办法使用少于 4 个反斜杠来表示一个文字反斜杠。

于 2012-12-02T09:02:07.473 回答
0

尝试

if (preg_match('/[^a-zA-Z0-9]+/', $your_string, $matches))
{
  echo '  symbol encountered !!';
}
于 2012-12-02T08:33:43.110 回答