Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式preg_match_all div不相同id_Php_Jquery_Html_Css_Regex - Fatal编程技术网

PHP正则表达式preg_match_all div不相同id

PHP正则表达式preg_match_all div不相同id,php,jquery,html,css,regex,Php,Jquery,Html,Css,Regex,我有一个像这样的html页面 <!DOCTYPE html> <html> .... <body> <div class="list-news fl pt10 "> Blue </div> <div class="list-news fl pt10 alternative">

我有一个像这样的html页面

<!DOCTYPE html>
    <html>
        ....
        <body>
            <div class="list-news fl pt10 ">
                Blue
            </div>
            <div class="list-news fl pt10 alternative">
                Yellow
            </div>
             <div class="list-news fl pt10 ">
                Red
            </div>
            <div class="list-news fl pt10 alternative">
                Cyan
            </div>
            <div class="list-news fl pt10 ">
                Black
            </div>
            <div class="list-news fl pt10 alternative">
                White
            </div>
        </body>
    </html>
现在,我将编写一个排序php代码来获取我需要的所有内容

preg_match_all('@<div class="list-news fl pt10 .*?">(.*?)<div class="list-news fl pt10 .*?">@s',$rs,$match);
这就是结果

[1] => Array
(
    [0] => <div>Blue</div></div>
    [1] => <div>Red</div></div>
    [2] => <div>Black</div></div>
)
结果仅显示div中的内容,不获取div中的内容,我可以使用str_replace删除可选类,但如果不替换此字符串,如何获取每个div匹配类列表news fl pt10中的所有内容。*

感谢您的想法。

一种简单的方法包含:

或没有:

一种简单的方法包括:

或没有:


改为使用php DOM扩展并按XPath搜索您的正则表达式(顺便说一句)在关闭前不匹配改为使用php DOM扩展并按XPath搜索您的正则表达式(顺便说一句)在关闭前不匹配
$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$query = <<<'EOD'
//div[
    contains(@class, 'list-news') and
    contains(@class, 'fl') and
    contains(@class, 'pt10')]
EOD;

$nodes = $xpath->query($query);

$results = array();

foreach ($nodes as $node) {
    $results[] = trim($node->textContent);

}
print_r($results);
preg_match_all('~<div class="list-news fl pt10\b[^>]+>\s*\K.*?(?=\s*</div>)~',
               $html, $matches);
print_r($matches[0]);
$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$query = '//div[@class]';

$nodes = $xpath->query($query);

$results = array();

foreach($nodes as $node) {
    if ( preg_match('~(?:\s|^)list-news\s+fl\s+pt10(?:\s|$)~',
                    $node->getAttribute('class')) )
        $results = trim($node->textContent);
}
$dom = new DOMDocument();
@$dom->loadHTML($html);

$divs = $dom->getElementsByTagName('div');

$results = array();

foreach($divs as $node) {
    if ( $node->hasAttribute('class') &&
         preg_match('~(?:\s|^)list-news\s+fl\s+pt10(?:\s|$)~',
                    $node->getAttribute('class')) )
        $results = trim($node->textContent);
}