2017-05-25 35 views
0

我使用Laravel並需要從li標籤(MRL247MC)中選擇最後一個單詞(產品代碼)。商品代碼始終位於「|」後面。問題在於,有時在h3標籤之後還有一些單詞(在這種情況下是Grün)。Laravel,選擇標籤中的最後一個字

<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

爲什麼不把產品代碼包裝在具有特定類的span標籤中?這將使它很容易找到,而不必做某種破解。看起來你正在讓它變得比它需要的更難。 – Matthew

+0

因爲這些信息不在我的網站上;-) –

+0

我看到了,您正在尋找的產品代碼總是會有相同的長度?如果是這樣,看看我的黑客一起解決方案[這裏](https://codepen.io/codemonkeyco/pen/QvoJdQ) – Matthew

回答

0

你可以使用換行符作爲分隔符(\n),或者你有辦法逐行獲取文本嗎?

如果可以,中庸之道走的第一行,並使用管道作爲分隔符,取最後一個元素和修剪,但你一定HAVA完成這部分已經:)

0

解析HTML而不是文本和使用正則表達式:

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

return preg_match('/\|\s*(\w+)/', $html, $matches) ? $matches[1] : null; 
0
$el = $crawler->filter('#itemInfo .menu .expand .acitem li')->first(); 
$text = $el->nodeValue; 

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

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

使用PHP的DOMDoument這樣的事情應該工作。我相信節點上的nodeValue屬性僅返回節點文本,不包括子元素。

相關問題