- 締切済み
preg_match_allのバグ?
改めて質問させていただきます。 <textarea cols=36 rows=15 name="before" wrap="virtual" style="width:320px;height:250px;">方法</textarea> <textarea cols=36 rows=15 name="after" wrap="virtual" style="width:320px;height:250px;">Method </textarea> これを preg_match_allの'/<textarea.*>(.*)<\/textarea>/ms'で二つとも取得するのですが、 他に色々と長い文字列を打ったうえで上記を取得すると何も表示されません。 ちなみに、文字の長さが半角で2820文字以上になると表示されません。 2819未満だとちゃんと取得して表示してくれます。 preg_match_allの関数のマニュアルを見たところそのような仕様は書いてありませんでした。 何かこれを取得できるように解決する方法はありませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
<textarea ... のデータが二つありますけど、これらは 一度に渡されるものですか? それとも別々に渡されるものですか? もし前者だとすると、長さがどうであろうと期待通りの 動作はしていないと思うのですが。 array(2) { [0]=> array(1) { [0]=> string(314) "<textarea cols=36 rows=15 name="before" wrap="virtual" style="w idth:320px;height:250px;">方法</textarea><textarea cols=36 rows=15 name="after" wrap="virtual" style="width:320px;height:250px;">Method</textarea><textarea cols =36 rows=15 name="after" wrap="virtual" style="width:320px;height:250px;">Method </textarea>" } [1]=> array(1) { [0]=> string(6) "Method" } } もう少し具体的な、「うまくいかないパターン」 のデータを説明してもらえませんか? textareaタグの属性のところが長いとか タグが始まるまでが長いとか 開始タグと終了タグの間にあるテキストが長いとか
- みずの(@mizuno3)
- ベストアンサー率73% (192/263)
全く関係ないかも知れませんが、以下にするとどうでしょうか? '/<textarea.*>(.*)<\/textarea>/msU' 文字数などには関係しないと思うのですが、もし何かあればバグかも知れませんね。