用PHP收集一些HTML部分(preg_match)

时间:2013-09-21 16:25:54

标签: php html preg-match

我喜欢这个小问题的帮助。

我需要PHP来收集HTML。可以说,这是完整HTML代码的一部分:

<div class="inner">
                <p>Hi there. I am text! I'm playing hide and seek with PHP.</p>
            </div>

我的目标是收集<p></p>之间的所有内容。这是我到目前为止的PHP:

    $file = file_get_contents($link); //Import le HTML
    preg_match('<div class="inner">
                        <p>(.*?)</p>
                    </div>si', $file, $k); //Play find & seek
    $k_out = $k[1];
    $name = strtok($k , '#'); //Remove everything behind the hashtags

    echo $name;

但是 - 遗憾的是 - PHP错误了我:

*警告:preg_match():未知修饰符'&lt;'在/home/fourwonders/alexstuff/vinedownloader/public_html/v/index.php第131行*

你能救我吗?至少,感谢阅读!

2 个答案:

答案 0 :(得分:2)

在这种情况下,这是因为你没有指定delimiters(你总是需要分隔符,如果它在你的表达式中,你需要总是转义分隔符:

preg_match('#<div class="inner">
                    <p>(.*?)</p>
                </div>#si', $file, $k);

答案 1 :(得分:2)

不要使用正则表达式来解析HTML。改为使用DOM Parser

$doc = new DOMDocument();
$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('p');
foreach ($tags as $tag) {
    echo $tag->nodeValue;
}

输出:

Hi there. I am text! I'm playing hide and seek with PHP.

Demo!