0

嗨,这是第一次提问……我有以下 preg_match 模式不起作用,我了解到这可能是 UTF-8 编码问题……或者只是我的编码错误!

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

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

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

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

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

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

任何人都可以阐明我要去哪里错了吗?我实际上已经阅读了一百页来寻找答案,这让我发疯了!

4

3 回答 3

1

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

于 2013-09-10T09:44:52.560 回答
0

怎么样:

$pattern="/^([A-Za-z \-]+(?:\'|&#0*39;)*)*[A-Za-z \-]+$/";
于 2013-09-10T10:02:48.540 回答
0

您可以使用此代码检查输入是否包含 ' 然后将撇号替换为空,如下所示

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

输出将是:

Welcome Im Lan Danel
于 2020-05-06T23:22:30.023 回答