- ベストアンサー
PHPの文字解析について質問です。
PHPの文字解析について質問です。 $a=○○、××; $b=○○・××; 変数にこのような値が入っている場合 「、」や「・」に着目してそれより前の文字列「○○」、後の文字列「××」を取得したいのですがそのようなことは可能でしょうか? ご教授よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>できれば動くソースを教えていただくと助かります。 えーと・・・ 基本的なマルチバイト系の環境設定ができていないんですよ ちゃんと設定していれば提示のソースでできます。 初心者でしたらまずきちんと設定するとこからはじめないと必ず詰まります。 ちなみに他の方が提示しているので動くと思いますが、残念ながら splitは非推奨の廃止予定関数のためexplodeなどに置き換えておく必要があります。 ご注意ください http://www.php.net/manual/ja/function.explode.php
その他の回答 (2)
- mpx
- ベストアンサー率71% (149/209)
シンプルに下記では如何でしょう。 <?php $str="○○・××"; list($mae, $ushiro) = split("(、)|(・)", $str); echo "前の文字列「{$mae}」、後の文字列「{$ushiro}」"; ?>
お礼
回答ありがとうございます。 連絡が遅くなってしまい申し訳ありません。 サンプル助かりました。
- yambejp
- ベストアンサー率51% (3827/7415)
単純にやるなら、、や・をデリミタにしてスプリットして、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]; ?>
お礼
迅速な対応有難う御座います。 早速上のプログラムで試してみたのですが、関数の未定義エラーが出てしまいます Fatal error: Call to undefined function mb_internal_encoding() 初心者で調べてみたのですが解決できませんでした。 できれば動くソースを教えていただくと助かります。 Apache2.0.63 PHP5.2.5 Windows XP SP3
お礼
丁寧にありがとうございます。 設定も勉強していきます。