簡體   English   中英

如何獲得介於<span>&</span>包括標簽和文本之間的所有內容

[英]How to get everything between <span> & </span> including tags and text

我嘗試使用preg_match_all來獲取給定html標記之間的所有內容,但它會產生空結果,並且我不太擅長php。

有沒有一種方法來獲取標簽之間的內容? 像這樣 -

<span class="st"> EVERYTHING IN HERE INCLUDING TAGS<B></B><EM></EM><DIV></DIV>&+++ TEXT </span>

preg_match在HTML解析方面不是很出色,尤其是在您的情況下,它有點復雜。

相反,您使用HTML解析器並獲取所需的元素。 以下是選擇第一個span元素的簡單示例。 可以通過查找class屬性來進一步區分(例如),只是為了給您一些開始的指針:

$html = '<span class="st"> EVERYTHING IN HERE INCLUDING TAGS<B></B><EM></EM><DIV></DIV>&+++ TEXT </span>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$span = $doc->getElementsByTagName('span')->item(0);
echo $doc->saveHTML($span);

輸出:

<span class="st"> EVERYTHING IN HERE INCLUDING TAGS<b></b><em></em><div></div>&amp;+++ TEXT </span>

如果仔細觀察,您會發現甚至是無效的HTML錯誤也可以通過&+++來解決,而該錯​​誤不是有效的HTML。

如果只需要內部HTML,則需要遍歷span元素的子代:

foreach($span->childNodes as $child)
{
    echo $doc->saveHTML($child);
}

給你的:

 EVERYTHING IN HERE INCLUDING TAGS<b></b><em></em><div></div>&amp;+++ TEXT 

我希望這是有幫助的。

試試preg_match

$str = "<span class=\"st\"> EVERYTHING IN HERE INCLUDING TAGS<B></B><EM></EM><DIV></DIV>&+++ TEXT </span>";
preg_match("/<span class=\"st\">([.*?]+)<\/span>/i", $str, $matches);
print_r($matches);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM