PHPの正規表現について質問します。


jekj<a>fsfsf</a>ffsffefl;e<a>vdgeggevdg</a>fesfsefs<a>geggeg</a>

とあった場合、<a></a>の中身だけ取り出したいです。

$text[0] = fsfsf;
$text[1] = vdgeggevdg;
$text[2] = geggeg;

となるように。

preg replace all を使うことまでは分かっているのですが、
できません。

よろしくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2016/01/01 14:01:12

ベストアンサー

id:tezcello No.1

回答回数460ベストアンサー獲得回数69

> preg replace all を使うことまでは分かっている
preg_match_all() の勘違いでしょう。

> できません。
この手の質問は「何をどうしてどうなった、その結果(もちろんエラーとなった場合も含む)は望んでいるものとどう違う」が必要だと思いますよ。


例示の場合で考えるとこんな感じ。

<?php
$str = 'jekj<a>fsfsf</a>ffsffefl;e<a>vdgeggevdg</a>fesfsefs<a>geggeg</a>';
preg_match_all('!<a>(.*?)</a>!', $str, $mch);
var_dump($mch[1]);
?>
array (size=3)
  0 => string 'fsfsf' (length=5)
  1 => string 'vdgeggevdg' (length=10)
  2 => string 'geggeg' (length=6)

でも、アンカータグなら属性値を持っているはずだけど考えなくていいんですよね?
__アンカーの a じゃなく、単なる例としての a ?
他にも改行の有無とか...

id:syatyuhakunsusume

すいません、matchでした。。。
展開するとき、foreachをすると
どおなるんですかね?

2016/01/01 13:48:27
id:syatyuhakunsusume

すいません、すべて解決できました。
本当にありがとうございました。

2016/01/01 14:00:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません