匹配文本单引号的PHP模式

匹配文本单引号的PHP模式,php,regex,Php,Regex,我的正则表达式模式给我带来了一些问题: preg_match('/^[A-Za-z_\'\$\, ]{3,}$/', $value); 出于某种原因,此模式不允许单引号(')字符返回true 即 dog返回true “dog”返回false-但应返回true 我已经搜索了相当广泛,但到目前为止,我没有看到任何东西可以解释这一点 -- 按要求使用代码进行编辑: if (!preg_match('/^[A-Za-z_\'\$\, ]{3,}$/', $field['php_population'

我的正则表达式模式给我带来了一些问题:

preg_match('/^[A-Za-z_\'\$\, ]{3,}$/',  $value);
出于某种原因,此模式不允许单引号(')字符返回true

dog
返回true

“dog”
返回false-但应返回true

我已经搜索了相当广泛,但到目前为止,我没有看到任何东西可以解释这一点

--

按要求使用代码进行编辑:

if (!preg_match('/^[A-Za-z_\'\$\, ]{3,}$/', $field['php_population']) && !empty($field['php_population'])) {
                $e['errors']['php_population'] = 'long winded error message';
}

它使用的方法是70-80行,所以我没有发布它-如果您需要全部,请告诉我。

您的正则表达式工作正常。工作正常,可能您使用了“而不是
好的,我已经将提供的vks版本复制回了我的代码中,但我仍然无法匹配包含单引号的字符串,但模式必须基本正确。PHP是否需要对引号进行不同的处理?伟大的链接,顺便说一句,书签。你可能有一个特殊的花式引号字符,它没有得到匹配的
,因为他们的字符代码是不同的。对不起,没有乐趣。然而,你确实让我怀疑我是否传递了我认为传递的内容,所以我尝试回显$field['php_population'](在ajax调用中不容易)的值,实际上我在粘贴行之前回显输入“dog”的“dog”。我只是在查找剥离函数-希望它能解决问题,将代码改为
if(!preg\u match('/^[A-Za-z\u\\$\,]{3,}$/',剥离斜杠($field['php\u population']))
。将于明天与托管公司联系,了解我上个月订购的vps为何开启了神奇报价。为您的帮助干杯!
<?php
echo preg_match('/^[A-Za-z_\'\$\, ]{3,}$/',"'dog'"); # <= return 1
echo preg_match('/^[A-Za-z_\'\$\, ]{3,}$/',urlencode("'dog'")); # <= return 0 as it test to %27dog%27
echo preg_match('/^[A-Za-z_\'\$\, ]{3,}$/',"dog"); # <= return 1
echo preg_match('/^[A-Za-z_\'\$\, ]{3,}$/',"'#dog'"); # <= return 0
?>
if (!preg_match('/^[A-Za-z_\'\$\, ]{3,}$/', urldecode($field['php_population'])) && !empty($field['php_population'])) {
                $e['errors']['php_population'] = 'long winded error message';
}