Laravel,选择标签中的最后一个单词

时间:2017-05-25 16:07:54

标签: php laravel

我与Laravel合作,需要从li标签(MRL247MC)中选择最后一个字(产品代码)。商品代码始终位于“|”后面。问题是有时在h3标签之后还有一些单词(在这种情况下是Grün)。

<li>
New Balance baut auf ihre Sammlung von klassischen Silhouetten in diesem Monat. Sie präsentieren den 247 als Teil. Die gepolsterte REVLITE-Zwischensohle wurde beibehalten und das Paar ist mit dem Branding auf der Zunge und einem Satz abgerundeter Schnürsenkel gefertigt | MRL247MC

<h3>Farbe</h3>
Grün
<span class="product-code">Product Code: 271355_sizede</span>

</li>

到目前为止我做了什么:

return $crawler->filter('#itemInfo .menu .expand .acitem li')->first()->text();

也许你可以帮助我。感谢

3 个答案:

答案 0 :(得分:0)

您可以使用换行符作为分隔符(\n),还是让您逐行获取文字?

如果可以的话,juste采取第一行,并使用管道作为分隔符,取最后一个元素并修剪,但你肯定已经完成了这部分:)

答案 1 :(得分:0)

解析HTML而不是文本并使用正则表达式:

$html = $crawler->filter('#itemInfo .menu .expand .acitem li')->first()->html();

return preg_match('/\|\s*(\w+)/', $html, $matches) ? $matches[1] : null;

答案 2 :(得分:0)

$el = $crawler->filter('#itemInfo .menu .expand .acitem li')->first();
$text = $el->nodeValue;

$parts = explode('|', $text)

$productCode = trim(end(explode('|', $text)))

使用PHP的DOMDoument这样的东西应该有效。我相信节点上的nodeValue属性仅返回节点文本,不包括子元素。