李需要正则表达式


need regular expression for li

如何在php中的li标记之间获取字符串?我尝试过许多php代码,但都不起作用。

<li class="release">
    <strong>Release info:</strong>
    <div>
        How.to.Train.Your.Dragon.2.2014.All.BluRay.Persian
    </div>
    <div>
        How.to.Train.Your.Dragon.2.2014.1080p.BRRip.x264.DTS-JYK
    </div>
    <div>
        How.to.Train.Your.Dragon.2.2014.720p.BluRay.x264-SPARKS
    </div>
</li>

你可以试试这个

$myPattern = "/<li class='"release'">(.*?)<'/li>/s";
$myText = '<li class="release">*</li>';
preg_match($myPattern,$myText,$match);
echo $match[1];

您不需要正则表达式。使用正则表达式解析HTML代码似乎是一个常见的错误(我从T.J.Crowder的评论中获得了URL)。

使用一个工具来解析HTML,例如:DOM库。

这是一个获取所有字符串的解决方案(我假设这些是文本节点的值):

$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//li//text()');
$strings = array();
foreach($nodes as $node) {
    $string = trim($node->nodeValue);
    if( $string !== '' ) {
        $strings[] = trim($node->nodeValue);
    }
}

print_r($strings);输出:

Array
(
    [0] => Release info:
    [1] => How.to.Train.Your.Dragon.2.2014.All.BluRay.Persian
    [2] => How.to.Train.Your.Dragon.2.2014.1080p.BRRip.x264.DTS-JYK
    [3] => How.to.Train.Your.Dragon.2.2014.720p.BluRay.x264-SPARKS
)