我与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();
也许你可以帮助我。感谢
答案 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
属性仅返回节点文本,不包括子元素。