[英]Regular expression pattern match
我想從包含html內容的字符串中提取第一次出現的( <a>
和<span>
標簽)之間的文本。
我的模式如下:
$pattern='/<a[^(span)][\/\(\)-:@!%*>#=_|?$&";.\w\s]+<\/a> <span/um';
我得到的輸出是第一次出現的<a
和最后一次出現的<span
之間的文本,而不是兩次出現的第一次之間的文本。
例如html內容:
<a href="#">asdasdasd</a> <span blah blah></span> blah blah <a>blah </a> <span>blah
想:
<a href="#">asdasdasd</a> <span
獲得:
<a href="#">asdasdasd</a> <span blah blah></span> blah blah <a>blah </a> <span
'/<a[^(span)][\\/\\(\\)-:@!%*>#=_|?$&";.\\w\\s]+?<\\/a> <span/um';
您需要通過告訴正則表達式使<a
和<span
之間的字符盡可能少地匹配.+?
:
$ptn = '/<a.+?<span/';
$str = '<a href="#">asdasdasd</a> <span blah blah></span> blah blah <a>blah </a> <span>blah';
preg_match($ptn, $str, $matches);
echo $matches[0];
結果為<a href=\\"#\\">asdasdasd</a> <span
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.