(Cake)PHP正则表达式中的双引号不匹配
我有一个正则表达式,它应该匹配以下形式的字符串:src=“/blkjad.dafsdf”>。它看起来是这样的:(src | href)(\s*)?=(\s*)?(\“|\”)/([^/].*)\4 虽然这在我运行的一个站点上运行良好,但在另一个内置的Cake上却始终失败 我现在不知所措。我工作的一位高级开发人员只是看了一下,基本上摇了摇头。不幸的是,我对蛋糕不太精通,而且我似乎在网上找不到任何类似的问题。有什么想法吗 编辑:对于记录,失败的正则表达式使用preg_match_all,而另一个(相同/工作正则表达式)使用preg_replace。下面是一些相关代码(Cake)PHP正则表达式中的双引号不匹配,php,regex,cakephp,double-quotes,Php,Regex,Cakephp,Double Quotes,我有一个正则表达式,它应该匹配以下形式的字符串:src=“/blkjad.dafsdf”>。它看起来是这样的:(src | href)(\s*)?=(\s*)?(\“|\”)/([^/].*)\4 虽然这在我运行的一个站点上运行良好,但在另一个内置的Cake上却始终失败 我现在不知所措。我工作的一位高级开发人员只是看了一下,基本上摇了摇头。不幸的是,我对蛋糕不太精通,而且我似乎在网上找不到任何类似的问题。有什么想法吗 编辑:对于记录,失败的正则表达式使用preg_match_all,而另一个(相
$regex['php'] = '/(src|href)(\s*)?=(\s*)?(\"|\')\/([^\/].*?)\4/';
$php = htmlspecialchars(file_get_contents(sprintf('/home/x/x/x/x/x/%s.%s', $string, $extension))); echo $php;
if (preg_match_all($regex['php'], $php, $out)){
echo sizeof($out);
echo nl2br(print_r($out, true));
} else {
echo 'Doesn\'t work';
}
我认为问题来自htmlspecialchars()调用 如合同中所述 执行的翻译是:
- “&”(与号)变为“&”
- “”(双引号)变为“”
- 未设置ENT_NOQUOTES时。“'”(单引号)仅变为“'”
- 当设置ENT_引号时。“”李>
粘贴一些相关代码怎么样?这个正则表达式是否被传递到Cake框架函数中?还是使用preg_u*函数族?您几乎没有提供可能有助于解决问题的上下文信息。您还可以添加一些失败的测试输入和预期的输出吗?当然可以。输入失败可能类似于src=“/blkjad/dafsdf.php”>。预期的输出将是完全匹配的,或者在表达式/(\“”/,“”)的情况下。然而,在上面的cake代码中,双引号根本不匹配。我不确定这是否是一个特定于蛋糕的问题,因为在我运行的另一个php代码中,相同形式的相同正则表达式可以很好地工作。