撇号与preg_match有关

时间:2013-09-10 09:13:40

标签: php utf-8 preg-match ascii apostrophe

嗨第一次问题在这里...我有以下不能正常工作的preg_match模式,我学到的可能是UTF-8编码问题......或者只是我的编码错误!

以下模式有效,但不适用于撇号(有/无逃避撇号没有区别):

$pattern="/^([A-Za-z \'-])+$/";

以下模式适用于我想要的撇号,但它也允许&,#和;这不太理想:

$pattern="/^([A-Za-z '\-])+$/";

此模式适用于所有字符,但只允许输入文本字符串中的一个撇号实例(我不理解&#0 * 39中0 *的重要性):

$pattern="/^([A-Za-z \-])+(\'|&#0*39;)*([A-Za-z \-])+$/";

任何人都可以了解我出错的地方吗?我已经翻了一百页寻找答案,这让我发疯了!

3 个答案:

答案 0 :(得分:1)

你试过:“/ [^ a-zA-Z0-9' - ] + /”

答案 1 :(得分:0)

怎么样:

$pattern="/^([A-Za-z \-]+(?:\'|&#0*39;)*)*[A-Za-z \-]+$/";

答案 2 :(得分:0)

您可以使用此代码检查输入中是否包含',然后将单引号替换为空

$text = "Welcome I'm Lan Danel";
if (strpos($text, "'") !== false) {
        $input= str_replace("'","",$txtComment);
}

输出将是:

Welcome Im Lan Danel