我有一个像这样的HTML文件。
<html>
<body>
.....
.....
<p class="new">
This is text <a href>link </a>
</p>
<p class="new">
More text here.
</p>
<p class="new">
More text here.
</p>
</body>
</html>
我只想获得如下文字:
这是文字链接。更多文字在这里。更多文字在这里。我该怎么做我试过了
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//p[contains(@class,'new')]');
没有成功。
错误:语法错误,意外T_STRING
答案 0 :(得分:1)
您正在使用单引号创建用作query
方法的参数的字符串,并将其嵌入到类名的字符串中。您需要转义内部引号或从单引号切换到双引号。试试这个:
$nodes = $xpathsearch->query('//p[contains(@class,"new")]');
或者这个:
$nodes = $xpathsearch->query('//p[contains(@class,\'new\')]');
有关PHP使用单引号或双引号以及在引号内转义值的说明,请参阅here。
答案 1 :(得分:0)
为了使表现更清晰,请使用此 -
$expression = "/html/body/p[@class='new']";
$result = $xpath->query($expression);