0

<a>HTML コンテンツを含む文字列から、(と<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
4

2 に答える 2

1
  1. HTMLの解析にHTMLパーサーを使用する
  2. 怠惰な数量詞を使用する'/<a[^(span)][\/\(\)-:@!%*>#=_|?$&";.\w\s]+?<\/a> <span/um';
于 2012-10-21T00:06:50.483 に答える
0

<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

于 2012-10-21T00:15:35.433 に答える