1

我想使用 PHP 的 preg_match_all 来捕获包含以下内容的子字符串:

  • AZ, az, 所有重音字符;
  • 空间;
  • 连字符。

它不能捕获包含其他任何内容的字符串,包括数字字符。

这个例子很接近,但也捕获了包含数字字符的字符串:

preg_match_all("/([\w -]+)/u", $abigstring, $matches);
4

3 回答 3

3

这是 Unicode 属性的工作:

preg_match_all("/([\p{L} -]+)/u", $abigstring, $matches);

\p{L}匹配具有 Unicode 属性“字母”的任何字符。

于 2013-01-14T16:51:52.687 回答
2

这也是一个选项:

preg_replace("/[^A-Za-zÀ-ÿ -]+/u", "", "juana 123456 sfdf 423 999 _ -a- dsa & ç%& à à$¨à+", -1);

这是一个工作示例-> https://xrg.es/#17hyhfm

于 2014-04-10T07:10:59.580 回答
0

对于那些想要的人,这里是对上面代码的更正,它不起作用!

preg_match("/^([\p{L} -]+)$/u", $string)

缺少锚点(^ 和 $)

编辑:好多了。如果连字符/空格只允许在中间:

/^([\p{L}](?:[\p{L} -]+[\p{L}])?)$/u
于 2013-10-02T10:33:33.143 回答