• ベストアンサー

PHPの文字解析について質問です。

PHPの文字解析について質問です。 $a=○○、××; $b=○○・××; 変数にこのような値が入っている場合 「、」や「・」に着目してそれより前の文字列「○○」、後の文字列「××」を取得したいのですがそのようなことは可能でしょうか? ご教授よろしくお願いいたします。

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

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

>できれば動くソースを教えていただくと助かります。 えーと・・・ 基本的なマルチバイト系の環境設定ができていないんですよ ちゃんと設定していれば提示のソースでできます。 初心者でしたらまずきちんと設定するとこからはじめないと必ず詰まります。 ちなみに他の方が提示しているので動くと思いますが、残念ながら splitは非推奨の廃止予定関数のためexplodeなどに置き換えておく必要があります。 ご注意ください http://www.php.net/manual/ja/function.explode.php

vanomega
質問者

お礼

丁寧にありがとうございます。 設定も勉強していきます。

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

シンプルに下記では如何でしょう。 <?php $str="○○・××"; list($mae, $ushiro) = split("(、)|(・)", $str); echo "前の文字列「{$mae}」、後の文字列「{$ushiro}」"; ?>

vanomega
質問者

お礼

回答ありがとうございます。 連絡が遅くなってしまい申し訳ありません。 サンプル助かりました。

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

単純にやるなら、、や・をデリミタにしてスプリットして、0番目の要素を拾う ※かならずUTFでやること <? mb_internal_encoding("UTF8"); $str="○○、××"; $pattern="/[、・]/u"; $elements=preg_split($pattern,$str); print $elements[0]; ?> もうすこし普通に正規表現をつかうなら <? $str="○○、××"; $pattern="/.*(?=[、・])/u"; preg_match($pattern,$str,$match); print $match[0]; ?>

vanomega
質問者

お礼

迅速な対応有難う御座います。 早速上のプログラムで試してみたのですが、関数の未定義エラーが出てしまいます Fatal error: Call to undefined function mb_internal_encoding() 初心者で調べてみたのですが解決できませんでした。 できれば動くソースを教えていただくと助かります。 Apache2.0.63 PHP5.2.5 Windows XP SP3

関連するQ&A

専門家に質問してみよう