• ベストアンサー

文章から指定した範囲の文字列を検索し取り出す方法

ある文章中から、指定した範囲の文字列が含まれるかどうかを検索し、それを取り出す方法がわかりません。 例えば、 【太郎君は花子さんに会い、「こんにちは」と言いました。】 という文章から 「」の中に入っている文字列(この場合は こんにちは)を取り出したい というように、ある文字や記号と記号の間に含まれる文字列をそのまま取り出したいと思っています。 ※ ・必ずしも「」が含まれるとは限らない ・「」の前、中の文字列が何文字かは決まっていない ・「のみや、」のみの場合は該当する文字列は無しにしたい ※ ・文章中に「」が含まれているのかを判別 ・含まれている場合はその「」内の文字列を抜き出す ・変数として置く といった流れかと思うのですが、具体的にどうしたらいいのかが解りません。 環境はPHP5、win 二ヶ月ほど前にPHPを始めました。まだまだ初心者で、解説サイトやマニュアルを読みながら勉強中です; アドバイスやご意見、ご指導等いただけると幸いです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

たとえばこんなかんじ <? $str = 'Aさんは「こんにちは」と言った。Bくんは「ごきげんよう」と言った。Cちゃんは「」だった'; preg_match_all('/「(.+?)」/mis',$str,$matches); print "<pre>"; print_r($matches); print "</pre>"; ?>

aky_root
質問者

お礼

ご回答ありがとうございます。 preg_match_allを使って試してみたところうまく行きました。 大変勉強になりました。 どうもありがとうございました! 回答No1,2の 「「」のように括弧が重複してしまった場合の取り出し方がまだ少し微妙なので、 ↑の例を参考にしながらもう少し勉強してみたいと思います。

その他の回答 (2)

回答No.2

例が悪かった。 「あいうえ「かきくけこ」さしす #最後の」がない

aky_root
質問者

お礼

すみません、そういったパターンを全く考えていませんでした; そうですね;ありえますよね。大変失礼致しました。 ご指摘ありがとうございます。 「あいうえ「かきくけこ」さしす」 の場合は   かきくけこ の1つ(もっとも狭い範囲)が必要な部分なので、 2.あいうえ「かきくけこ」さしす  かきくけこ  の2つとして取り出す が希望ですが、処理が軽くなるのであれば 1.あいうえ「かきくけこ  1つを取り出す。 でも構いません。 「あいうえ「かきくけこ」さしす の場合も同様に  かきくけこ の部分が取り出せると良いですが、  あいうえ「かきくけこ を取り出すのでも構いません。

回答No.1

「あいうえ「かきくけこ」さしす」 はどのように取り出すべきか? 1.あいうえ「かきくけこ 1つを取り出す。 2.あいうえ「かきくけこ」さしす  かきくけこ  の2つとして取り出す 当たり前だとか言わずに決めておかないと結構嫌な回答がつくから注意してね。

関連するQ&A