【问题标题】:preg_match_all returns empty arraypreg_match_all 返回空数组
【发布时间】:2013-06-20 19:48:35
【问题描述】:

$matches 返回一个空数组...

这不起作用

$missedvalue = $_GET['missedvalue'];
$pattern = "/(?:\"(?:\\\\\"|[^\"])+\")/is";
preg_match_all($pattern, $missedvalue, $matches);

但是这行得通

$missedvalue = 'test "gift card"';
$pattern = "/(?:\"(?:\\\\\"|[^\"])+\")/is";
preg_match_all($pattern, $missedvalue, $matches);

怎么了?我不能放弃把我的手指放在它上面......我试图将$missedvalue 转换为(string) 但这没有用。我不知所措。哦,$_GET['missedvalue'] 绝对等于 test "gift card"

【问题讨论】:

    标签: php regex preg-match-all


    【解决方案1】:

    为什么不在这样的模式中使用单引号:

    $pattern = '/(?:"(?:\\\"|[^"])+")/i';
    

    【讨论】:

    • 因为我偶然发现了正则表达式并且总是不得不使用我能找到的东西..但是使用你的正则表达式仍然没有帮助。
    • string 'test "gift card"' (length=26)
    • 是的,我怀疑你的查询参数中首先没有" :P 太好了,你的问题可以解决了。
    【解决方案2】:

    我已经在我的机器上尝试了你的代码,它对我有用。也许您正在对 $pattern 做一些事情,或者在运行正则表达式之前对标头进行一些预处理...?

    【讨论】:

    • 我刚试过这个str_replace('"', '=', $_REQUEST['missedvalue']) 并没有删除双引号.. hmmmm
    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 2011-08-28
    • 2015-12-24
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多