PHP::Cleaner preg_匹配所有结果

PHP::Cleaner preg_匹配所有结果,php,loops,foreach,preg-match,preg-match-all,Php,Loops,Foreach,Preg Match,Preg Match All,我正在尝试从外部html页面获取值 现在,这让我变魔术: preg_match_all('/id="localWeather">(.*?)<\/div>/',$returnedPage,$returnValues,PREG_SET_ORDER); 但是在这一行之后,我需要循环结果并清理它 为什么??因为我只需要这个。*?出于某种原因,它还返回了额外的结束标记,所以我需要循环它,然后清理数组 我的问题是,如何强制只返回以下内容:* 取消预设置顺序。例如: <?php $

我正在尝试从外部html页面获取值

现在,这让我变魔术:

preg_match_all('/id="localWeather">(.*?)<\/div>/',$returnedPage,$returnValues,PREG_SET_ORDER);
但是在这一行之后,我需要循环结果并清理它

为什么??因为我只需要这个。*?出于某种原因,它还返回了额外的结束标记,所以我需要循环它,然后清理数组

我的问题是,如何强制只返回以下内容:*

取消预设置顺序。例如:

<?php

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

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

print_r($returnValues);
输出:

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]是与正则表达式匹配的字符串的整个部分的数组


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

$returnValues[0][1]不应该有。这也适用于PREG_SET_顺序,只是不同的数组结构。是的,但我将请求解释为只获得一个结果数组。如果你只想这样,使用PREG_SET_顺序,你必须循环数组。我想他们的意思是他们得到了类似于test的东西,这似乎是不可能的。是的,我假设了两件事之一:他们没有得到他们正在得到的东西,或者其他与正则表达式不匹配的东西,或者他们错误地解释了匹配结果,并查看了错误的数组。工作非常完美!我只是觉得直接用preg_match_all做这件事是可能的。。。可能不会吧?