如何在preg_match中使用htmlspecialchars

时间:2011-04-22 22:23:09

标签: php preg-match htmlspecialchars

这是我的代码,它会回显“不工作”

    $f = file_get_contents("http://www.google.com");
    $text = htmlspecialchars( $f );

        $matches = array();
        preg_match('@<a.*?</a>@s', $text, $matches);
        if ($matches) {
            $text2 = $matches[0];
            echo $text2;
        }
        else {
            echo "Not working";
        }

如果我做了一个变量:

$text = '<a href="http://www.google.com">Google</a> is your best friend!';

这会以某种方式起作用,但是当我从以下地方拿走它时它不会。

$text = htmlspecialchars( $f );

任何人都知道为什么?

2 个答案:

答案 0 :(得分:2)

htmlspecialchars将从

转换
<

&lt;

等。 See the manual.

答案 1 :(得分:2)

这是因为htmlspecialchars会将所有特殊字符<&>"'等转换为html entities(例如,&变为&amp;)。因此你的比赛失败了。