2012-07-19 63 views
0

我想通知用户什么字符不符合正则表达式。 但是,当我尝试将其打印到屏幕上时,它会呈现为带有问号的三角形。PHP preg_match,通知用户哪个字符不被允许

这里是我的代码...

$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数组内部渲染字符的最佳方法是什么,以便用户可以更正它们的文本?

谢谢。

+0

什么样的模式是什么?换言之,你认为什么样的角色*有效*?只有A-Z? – deceze 2012-07-19 11:47:02

+0

这是GSM字符集, [链接](http://www.csoft.co.uk/sms/character_sets/gsm.htm) – davesherlock 2012-07-19 11:49:29

+0

什么编码是'$ text'和你的源代码? – deceze 2012-07-19 11:51:00

回答

0

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

/.../u 
+0

...所以你有一个真正的答案**接受**。 – deceze 2012-07-19 12:03:57

+0

是的,谢谢你的帮助。 – davesherlock 2012-07-19 12:12:55