【问题标题】:PHP preg_match, informing the user which character is disallowedPHP preg_match,通知用户哪个字符是不允许的
【发布时间】:2012-07-19 11:44:54
【问题描述】:

我想告知用户哪些字符不符合正则表达式。 但是当我尝试将它打印到屏幕上时,它呈现为一个带有问号的三角形。

这是我的代码...

$matches = array();
$pattern = '"[^@?0¡Pp£_!1AQaq\$F\"2RBbr3¥G#\s\.\,\:\'3CScsè?¤4DTdtéO%5EUeuù?&6FVfvì?7GWgwòS\(8HXhxÇT\)9IYiy?\*:JZjzØ\+\;KÄkäøÆ\,\<LÖlöæ\-\=MÑmñÅ\.\>NÜnüåÉ\/\?O§oà\{\}]"';
$text = "Flight Vol {FN} vol est retardé d'au moins 1 heure, s'il vous plaît consulter les écrans de l'aéroport pour les mises à jour. Service à la clientèle de AIRLINE";  


if(preg_match($pattern, $text, $matches)){

    $output =  '<p>This Text contains invalid character(s) ';
    $output .= '<span style="color:#000; border-bottom:1px dashed #F33; padding:0px 5px 0px 5px; "><strong>'.implode(" ",$matches).'</strong></span>';
    $output .= ' is not allowed.</p>';
    $output .= "<p><strong>".$text."</strong></p><br />";
    print $output;
}

我认为这与拉丁编码或 UTF-8 有关,但我在网站的其余部分使用 UTF-8。在 $matches 数组中呈现字符以便用户更正其文本的最佳方式是什么?

【问题讨论】:

  • 那是什么模式?换句话说,你认为什么样的角色有效?仅限 A-Z?
  • 这是 GSM 字符集,link
  • $text 和你的源代码是什么编码的?
  • $text 上的编码是 UTF-8
  • 那么你应该使用/.../u正则表达式修饰符。

标签: php regex utf-8


【解决方案1】:

使用 UTF-8 正则表达式修饰符:

/.../u

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 2015-09-26
    • 2011-10-15
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多