为什么preg_match不能在preg_replace_callback函数中工作

时间:2014-01-16 10:54:30

标签: php html regex

我知道将它用于HTML字符串操作并不是一件好事,但有时在我使用的PHP环境中没有DOMDocument。

preg_replace_callback($pattern, function ($matches) {

    $z = $matches[2];
    preg_match('/src="([^"]*)"/i', $z, $t);

    //a lot of string manipulation going on here

    return $t[0].'and'.$matches[2];

}, $content_taken_FROM_HTML);

这里的$matches[1]'src="a.jpg"';

如果我放$z='src="a.jpg"',它就可以了。但是只要我将它保留为$z= $matches[1];,它应该给出相同的字符串,它就不起作用。

这里发生了什么?这怎么能解决?

1 个答案:

答案 0 :(得分:1)

原始字符串中的"\转义,可能是由preg_replace_callback() $matches中的内置内容引起的。

我的朋友应该有stripslashes()

  

stripslashes()函数

     

取消引用带引号的字符串。

感谢anubhava建议var_dump($matches)。一个很好的调试方法!