正規表現で想定している抽出が出来なく迷っております。
$yyyyyyy = '<a style="font-weight:bold">>>1</a> <br> あああ <br> <a style="font-weight:bold">>>2</a> いいい'; preg_match_all("/<a style=\"font-weight:bold\">>>[0-9]{1,4}</a>.*/",$yyyyyyy,$ccchhh); echo '<br>一致を表示します。<br>'; print_r($ccchhh);
とあったとしまして、これを最終的には
抽出狙いの結果1
<a style="font-weight:bold">>>1</a> <br> あああ <br>
抽出狙いの結果2
<a style="font-weight:bold">>>2</a> いいい
の2つを取得したいと思っています。
最終的には上記2つを抽出することですが
まずは例えば$yyyyyyy全体を取って、
目的2さえ取り出せば、$yyyyyyyから目的2を削除すれば
それは目的1になる、など方法の構想は練っておりました。
ところが、一致の表示の$ccchhhは以下の様になります。
一致を表示します。 Array ( [0] => Array ( [0] => >>1 あああ >>2 いいい ) )
と一つだけしか抽出結果はありません。
<a style="font-weight:bold">>>2</a> いいい
の部分はpreg_match_allで抽出してくれない状態です。
一方、あくまでhtmlタグや数字のみの抽出条件として、上記から正規表現部分の.*を取りますと
preg_match_all("/<a style=\"font-weight:bold\">>>[0-9]{1,4}</a>/",$yyyyyyy,$ccchhh);
こうしますと
一致を表示します。 Array ( [0] => Array ( [0] => >>1 [1] => >>2 ) )
ちゃんと配列で2つ、>>と数字、などが $ccchhhに格納されます。
抽出狙いの結果1、2を最初から綺麗に取り出せなくても、少なくとも2つ以上抽出できないと何も進まないと思っており、
間違い等々をご指摘頂けたら有難いです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/31 15:15
2018/10/31 23:44