2011-08-02 37 views
0

我試圖抓住什麼是H4文本PHP正則表達式H4標籤之間的信息

$regex = '/<h4>([A-Za-z0-9\,\.])/'; 

我剛開的第一個字母后面,我無法弄清楚如何使用*保持抓住一切的第一<字符。

我做了無數次嘗試,並且知道我忽略了簡單的事情。

所以我做那麼多比我需要的,下面的工作更難:

$regex = '/<h4>.*?<\/h4>/'; 
+1

不是['getElementsByTagName'](HTTP ://www.php.net/manual/en/domdocument.getelementsbytagname.php)很適合? – Wrikken

+0

@Wrikken當你在PHP中時不行。 :P我希望這很容易。 –

+1

@PhpMyCoder您是否點擊Wrikken的鏈接?這是一個PHP函數:http://www.php.net/manual/en/domdocument.getelementsbytagname.php – Paulpro

回答

4

如果你能相信,抓住所有的字符,直到達到第一個<是一個足夠好的規則,然後使用此:

$regex = '/<h4>([^<]*?)</'; 

當然這個定義只會搶'The '<h4>The <b>Best</b> Book</h4>您可以修復被其更改爲:

$regex = '/<h4>(.*?)<\/h4>/'; 

這將搶<h4></h4>之間的一切,但仍然是不完美的,因爲像<h4 ><h4 style="...">任何東西會打破它,有一百萬其他有效 HTML舉例。如果你知道這些內容不會有任何<,並且你知道你的標籤永遠是<h4>,那麼第一個標籤對你的情況來說足夠好。

如果您的情況更復雜,您將需要使用PHP的DOM擴展(DOMDocument),它是用於解析HTML和XML的,因爲它們既不是常規語言,也不能通過正則表達式無錯地解析。

+3

非常感謝您的全面回覆。我非常感謝您抽出時間幫助我。 – Eric

+1

@Eric不客氣:) – Paulpro

0

您可以使用下面的函數來完成此任務。

**function getTextBetweenTags($string, $tagname) { 
    $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/"; 
    preg_match($pattern, $string, $matches); 
    return $matches; 
}** 

在第一個參數,您必須通過完整的字符串,並在第二個參數,你必須通過標記名(「H4」)..

相關問題