2009-09-10 91 views
1

我想知道如何找到作爲HTML文檔一部分的短語/單詞。例如,如果我有以下文件:使用PHP在HTML之間查找短語/單詞

<a href="#">This is a test</a><b>Another test</b> 

我的目標是要找到「這是一個測試」和「另一項測試」,並用別的東西代替它。請注意,這些是示例短語,可能包含數字或符號符號。

任何幫助將是偉大的。

謝謝

回答

0

你可以使用PHP的strip_tags($string, $tagsToRemove)

$justText = strip_tags('<a href="#">This is a test</a><b>Another test</b>'); 

然後你就會有文本,所以你可以使用str_replace("new text", $justText);

您可能需要打破它使用第二儘管如此,參數strip_tags()以保持標籤獨立。

$html = '<a href="#">This is a test</a><b>Another test</b>'; 
$anchorText = strip_tags($html, '<a>'); 
$paraText = strip_tags($html, '<p>'); 
$html = str_replace("new anchor text", $anchorText); 
$html = str_replace("new paragraph text", $paraText); 
+2

我覺得他要尋找替換的文本不剝離標籤 –

+0

+1與菲爾Pafford,並使用strip_tag後可能很難unstrip它,如純文本一些字符可能變成「<" and "> 「符號。 –

+1

strip_tags不會讓'<' and '>'字符神奇地出現,你知道的。 – nickf

2

考慮您的HTML作爲XML和使用DOM(PHP 5)或DOM XML(PHP 4)擴展(或包含在PHP任何其他XML擴展)。

對於每個節點,您可以使用DomNode.GetValue(取決於您使用的庫)來獲取內部文本。

0

Here說明如何刪除所有的HTML的東西(HTML標籤,腳本,CSS),然後用str_replace函數可以代替任何你想要的。

0

這裏的關鍵是使用正則表達式,在某種意義上,解析HTML ...

所以,你會使用方法:

<?php 

$str = "<a href =\"\">Hello</a>"; //The string to search 

preg_match('/(<.+>)??.+(<\/.+>)??/i',$str,$match); //Find all occurences and store the tag content in an array called $match 

echo $match[0]; //Echo the first value 

?> 

這基本上搜索輸入字符串(您想設置爲頁面的HTML),並返回標記之間的文本的每場比賽的數組中的值。對於第一個標記,值將存儲在$ match [0]中,第二個存儲在$ match [1]中,等等。

它通過首先找到以HTML標記開頭並以一個HTML標記,但不選擇任何標記,只保留選中的內容。

希望這會有所幫助!

Braeden

+0

解析HTML的關鍵實際上不是使用正則表達式,而是正確的HTML/XML解析器。 –

+0

但是,如果他只是獲取標記內容,那麼爲什麼只要使用簡單的正則表達式就可以加載解析器? – BraedenP

+0

,因爲它不是一個簡單的正則表達式。嘗試爲他的例子找到一個工作的(你的不),然後找到一個'This is Another test a test'。 –

相關問題