我試圖抓住什麼是H4文本PHP正則表達式H4標籤之間的信息
$regex = '/<h4>([A-Za-z0-9\,\.])/';
我剛開的第一個字母后面,我無法弄清楚如何使用*保持抓住一切的第一<字符。
我做了無數次嘗試,並且知道我忽略了簡單的事情。
所以我做那麼多比我需要的,下面的工作更難:
$regex = '/<h4>.*?<\/h4>/';
我試圖抓住什麼是H4文本PHP正則表達式H4標籤之間的信息
$regex = '/<h4>([A-Za-z0-9\,\.])/';
我剛開的第一個字母后面,我無法弄清楚如何使用*保持抓住一切的第一<字符。
我做了無數次嘗試,並且知道我忽略了簡單的事情。
所以我做那麼多比我需要的,下面的工作更難:
$regex = '/<h4>.*?<\/h4>/';
如果你能相信,抓住所有的字符,直到達到第一個<
是一個足夠好的規則,然後使用此:
$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的,因爲它們既不是常規語言,也不能通過正則表達式無錯地解析。
您可以使用下面的函數來完成此任務。
**function getTextBetweenTags($string, $tagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
preg_match($pattern, $string, $matches);
return $matches;
}**
在第一個參數,您必須通過完整的字符串,並在第二個參數,你必須通過標記名(「H4」)..
不是['getElementsByTagName'](HTTP ://www.php.net/manual/en/domdocument.getelementsbytagname.php)很適合? – Wrikken
@Wrikken當你在PHP中時不行。 :P我希望這很容易。 –
@PhpMyCoder您是否點擊Wrikken的鏈接?這是一個PHP函數:http://www.php.net/manual/en/domdocument.getelementsbytagname.php – Paulpro