首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP::更清晰的preg_match_all结果

PHP::更清晰的preg_match_all结果
EN

Stack Overflow用户
提问于 2015-01-22 18:20:53
回答 1查看 174关注 0票数 1

我正在尝试从外部html页面中获取一个值。

这对我来说很神奇:

代码语言:javascript
复制
preg_match_all('/id="localWeather">(.*?)<\/div>/',$returnedPage,$returnValues,PREG_SET_ORDER);

但是在这行之后,我需要循环结果并清理它。

为什么?因为我只需要这个(.*?),而且由于某种原因,它还会返回,所以我还需要添加额外的</div>结束标记,所以我需要循环它,然后清理数组。

我的问题是如何强制只返回以下内容:(.*?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-22 18:25:15

摆脱PREG_SET_ORDER。示例:

代码语言:javascript
复制
<?php

$returnedPage = '<div id="localWeather">test</div><div id="localWeather">test2</div>';

preg_match_all('/id="localWeather">(.*?)<\/div>/',$returnedPage,$returnValues);

print_r($returnValues);

输出:

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [0] => id="localWeather">test</div>
            [1] => id="localWeather">test2</div>
        )

    [1] => Array
        (
            [0] => test
            [1] => test2
        )

)

因此,在本例中,$returnValues[1]是一个匹配数组,只包含div之间的内容(而不是结束div),而$returnValues[0]是与regex匹配的字符串的整个部分的数组。

此外,不建议使用正则表达式来解析HTML。我看一下PHP的DOMDocument类,它更健壮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28095982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档