PHP - 将preg_replace与file_get_contents一起使用

时间:2013-06-28 18:14:47

标签: php preg-replace file-get-contents

上面的代码工作正常:

<?php

function clearPage($content, $class) {
$arr = array(
            '@^(.*?)<div class="'.$class.'">(.*?)</div>(.*?)$@i' => '<div class="'.$class.'">$2</div>'
            );

    return preg_replace(array_keys($arr), array_values($arr), $content);


}


$class = "something";
$content = "31xu1823y8<div class="something">Wanted</div>912u38u3"
$result = clearPage($content, $class);
echo $result;
?>

输出:

<div class="something">Wanted</div>

但我想制作变量内容,是网站页面的html代码。所以我将最后一个代码更改为:

$class = "something";
$content = file_get_contents('index.php');
$result = clearPage($content, $class);
echo $result;

This outputs all the webpage! Why!?

1 个答案:

答案 0 :(得分:0)

使用正则表达式或字符串匹配是解析HTML的最糟糕方式。

您需要使用DOM: http://php.net/manual/en/book.dom.php

或第三方dom库如下: http://simplehtmldom.sourceforge.net/