<font size="+1"><font size="+2" color="green"><b>1.</b>
</font><b>If no head injury is too trivial to be neglected, then:</b></font>
PHP を使用してpreg_match
、またはpreg_match_all
「頭部外傷が無視できないほど些細なことではない場合:」というテキストを取得したい
これどうやってするの?
<font size="+1"><font size="+2" color="green"><b>1.</b>
</font><b>If no head injury is too trivial to be neglected, then:</b></font>
PHP を使用してpreg_match
、またはpreg_match_all
「頭部外傷が無視できないほど些細なことではない場合:」というテキストを取得したい
これどうやってするの?
コード :
<?php
$str = '<font size="+1"><font size="+2" color="green"><b>1.</b></font><b>If no head injury is too trivial to be neglected, then:</b></font>';
$pattern = "/font><b>(.+)<\/b>/";
preg_match($pattern,$str,$matches);
echo $matches[1];
?>
出力:
軽微で無視できない頭部外傷がない場合、次のようになります。
キャプチャする文字列を選択する条件がわからないのですが、なぜ1.キャプチャされないのに、2。文字列はキャプチャされるのでしょうか。あなたが私が推測することしかできないと説明しない限り、式として:
/<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*>([^<]+)</\w+>/g
<p>text<br /></p>
テキストノードのみを含むすべてのhtmlタグに一致します(整形式ではないため、xhtmlの場合に当てはまります...)。
そのため<p>text</p><br>text2</br>
、一致し、その結果、テキストはキャプチャグループ1になります。
<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*>
すべての開始xhtmlタグをキャプチャします
([^<]+)
<を除くすべてのcahrをキャッチし、キャプチャグループに入れます
</\w+>
ついにクロージングタグをキャッチ...
これg
は、式が複数の結果をキャッチできるようにするためのグローバルフラグです。
これで頑張ってください、あなたが何か違うものを必要とするならば、もう少し正確にしてください...
パターンは次のようになります。
/<\s*b\s*>(.+)<\s*\/b\s*>/