从远程网站获取信息

时间:2012-01-10 16:44:06

标签: php regex

我正在从远程网站上获取信息,我仍然坚持使用这一点:

<div>
        <a onclick="javascripthere" href="#">
            <img width="110" height="160" alt="" src="imageurlhere">
            {variable sized string}
        </a>
        <br>2012/01/10 17:35:20<br>
        <img alt="{variable sized string}" src="imageurlhere">
</div>

从上面的html我需要拿起2“{variable sized string}”。它们可以是任何类型的字符(a-zA-Z0-9和空格/其他字符),我无法弄清楚用什么样的正则表达式或php来获取这两个字符串。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您可以使用DOMDocument来执行此操作,而不是使用正则表达式,这对于解析HTML或XML并不理想。您的代码将更清晰,更易于阅读。

例如:

$doc = new DOMDocument();
$doc->loadHTML("<html><body><img alt="{variable sized string}" src="imageurlhere"></body></html>");
$images = $doc->getElementsByTagName('img');
foreach($images as $image) {
    echo $image->getAttribute('alt');
}

有许多项目使用更简单的API(例如phpquery(jQuery,如选择器来导航DOM)和Simple HTML DOM Parser来包装DOMDocument。

答案 1 :(得分:0)

请勿使用regular expressions to parse HTML

使用DOM parser。它将使您的开发更多更简单。

答案 2 :(得分:0)

$preg_match("/<img.*?>(.*?)<\/a>/", $string, $match);

//$match[1] is your first string

$preg_match("/<img alt=\"(.*?)\"/", $string, $match2);

//match2[1] is your second string.