簡體   English   中英

正則表達式模式匹配

[英]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
  1. 使用HTML解析器解析HTML
  2. 使用惰性量詞'/<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.

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