PHP - 使用unicode正则表达式在PHP中匹配城市/街道名称

时间:2014-04-04 15:48:57

标签: php regex unicode

我有这个表达:

'/^([\p{L}\p{Mn}\p{Pd}\'\x{2019}]+|\d+)(\s+([\p{L}\p{Mn}\p{Pd}\'\x{2019}]+|\d+))*$/u'

目标是匹配名称和数字,例如“6 de diciembre”或“MarianadeJesús”(使用数字和unicode字符。

问题是它也匹配错别字:“6de diciembre”[1]。 不应允许在同一个单词中混合数字和字母(不,在这种情况下,我们没有表达“6th”)。

问题:我应该使用哪些角色类?我需要数字和这些unicode字母,但不是混合的,不是连接的。

注意:我之前发过一个关于这个主题的类似问题,但问题略有不同,不能指望同样的答案。

[1]我无法相信我必须澄清这一点:拼写错误不应该匹配 - 除非明确说明,正则表达式是在字符串中找到预期的常规格式

1 个答案:

答案 0 :(得分:0)

表达式效果很好。我有一个完全不同的问题,其中我的验证处理程序未被调用

经过一些实验后,我注意到如果我减少验证处理函数的长度,那么DRUPAL 7表单可以将它用作处理程序,而不是默默地丢弃它。是的,女士们,先生们,我的经纪人被命名为toyotaec_form_webform_client_form_trabaja_con_nosotros_validate并被指定为:

`$form['#validate'][] = 'toyotaec_form_webform_client_form_trabaja_con_nosotros_validate';`.

切换' con_notros _'双方的一部分使它成功,并引导我得出这个结论。

:Drupal对这些标识符有一个(n绝对无意义的)限制,而PHP则没有 。:Drupal在分配输入时截断输入 。:Drupal在不存在的函数时不会引发错误(截断的名称不作为函数存在)。

Rantful(但逻辑)结论:对于这个以及之前的许多问题,我得出结论,drupal 糟透了