[CDATA[ケーキ]]
と出力されている部分のうち「ケーキ」という部分だけ取り出そうと考えています。
こちら
http://phpspot.net/php/pg%90%B3%8BK%95%5C%8C%BB%82%C5%95%B6%8E%9A%97%F1%92u%8A%B7.html
を参考に、
$_string = "[CDATA[ケーキ]]";
$string = ereg_replace("\[CDATA\[(.+?)\]\]","\\1",$_string);
echo $string;
というサンプルコードを書いてみたのですが、$string の中身は var_dump($string) しても bool(false) と出てくるだけです。
うまくこの一致部分を取り出すには、何処を直したらいいでしょうか。
ちょっとレベルの低い質問で恐縮ですが、よろしくお願いします。
http://php.morva.net/manual/ja/function.mb-ereg-replace.php
日本語を扱うのでしたら mb_ereg_replace ではないでしょうか。
mb_internal_encoding や mb_regex_encoding での文字コード指定も合わせてどうぞ。
$str = "[CDATA[クッキー]]";
$string1 = preg_replace("/\[CDATA\[(.+?)\]\]/","\\1",$str);//preg_replaceを使う場合
$string2 = mb_ereg_replace("\[CDATA\[(.+?)\]\]","\\1",$str);//mb_ereg_replaceを使う場合
echo $string1."=".$string2;
technolize さんのおっしゃる通り、マルチバイトを扱う場合はmb_ereg_replaceを使用するとうまくいきます。
またpreg_replaceは確かUTF-8でのエンコーディングならマルチバイト対応していたと思います。
ありがとうございます。マルチバイトのところはすっかり頭から抜けていたようで恥ずかしいです。
preg_replace でやりなおしたところ、無事うまくマッチし、取り出すことが出来ました。ケースバイケースで両者を使い分けていきたいと思います。
改めてお礼申し上げます。
http://www.google.co.jp/search?q=mb_ereg+UTF-8&start=0&hl=ja...
補足です。
PHP のバージョンによっては文字コードとの兼ね合いでうまく動作しないこともあるようです。
仰るとおり、使い分けるのが賢明ですね。
ありがとうございます。こういう検索クエリは思いつきませんでした。勉強になります。
回答ありがとうございます。
ひとまず結果が帰ってこないという状態からは脱することが出来ました。
しかし、文字によってはマッチしないケースがあり、文字コードの設定もいろいろ揃えて見ましたがうまくいかないようでした。