- ベストアンサー
記号()が混ざった正規表現について
さらに、申し訳ありません。 文字列:<textarea name="sss1" cols="100" rows="12" onClick="FormName(this)">abcde</textarea><textarea name="sss2" cols="100" rows="12"></textarea> から、 abcde を抽出したく、 下記のようにコーディングしましたが、 abcde</textarea><textarea name="sss2" cols="100" rows="12"> になってしまいます。 正規表記のコーディングを教えてください。 よろしくお願いします。 <?php $a = "<textarea name=\"sss1\" cols=\"100\" rows=\"12\" onClick=\"FormName(this)\">abcde</textarea><textarea name=\"sss2\" cols=\"100\" rows=\"12\"></textarea>"; mb_ereg("<textarea name=\"sss1\" cols=\"100\" rows=\"12\" onClick=\"FormName(this)\">(.*)</textarea>",$a,$b); print "$b[1]"; ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
自分もあまり正規表現は詳しくはないのですが・・ mb_ereg('<textarea[^>]*>([^<]*).*', $a, $b); これで取得できます。 正規表現のメタ文字などの意味をしっかり理解するところから勉強した方が良いですね。
その他の回答 (2)
- Suzi
- ベストアンサー率38% (130/334)
以下のではどうですか? $ip = array(); if(preg_match('/<textarea.+?>(.+)?<\/textarea/', $a, $ip) > '0') print "\$ip[1] = ". $ip[1]; else print "No match";
お礼
ご回答、ありがとうございました。 結果は </textarea><textarea name="sss2" cols="100" rows="12"> が後に残ってしまいました。 でも解決しましたので、 ご協力に感謝します。
- asuncion
- ベストアンサー率33% (2127/6290)
ちょっとした例です。 <?php $a = "<textarea name=\"sss1\" cols=\"100\" rows=\"12\" onClick=\"FormName(this)\">abcde</textarea><textarea name=\"sss2\" cols=\"100\" rows=\"12\"></textarea>"; mb_ereg("<textarea(.*)>(.*)</textarea>(.*)</textarea>", $a, $b); print_r($b[2]); ?>
お礼
$b[1]ではなく、結果の文字列が$b[2]となるのは、 文字列を3分割しているんですね。 ありがとうございます。
お礼
ありがとうございます。 うまくできました。 感謝します。