こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでの文字列置換について

こんにちは

PHPにて丸カッコ内の文字列を取得しようとしています。
対象の文字列は、「坂(さか)」という文字列の全角丸カッコ「()」内になります。

正規表現でやればすぐに取得できるのかもしれませんが、正規表現の知識が無いため
力ずくでやってみようとしました。
そこで、「(」で文字列の位置を取得して…と考えて色々やったのですが、
この全角丸カッコ「(」が、mb_strposでも位置を検知できず、
全角丸カッコ「(」を半角にして対応してみようかとmb_ereg_replace('(','(','坂倉武史(さかくらたけし)');としようとしても、変換されず困っております。

ちなみに「坂(さか)」という文字列は、
ネット上のあるHTMLから、file_get_contentsでURLを指定してから
取得して、その文字コードがEUC-JPなので、
mb_convert_encoding($dataXML, "UTF-8", "EUC-JP");
で、UTF-8に変更しております。

文字コードの問題のかもしれませんが、答えがみつかりません。

1。正規表現で取得できるのであれば、正規表現の書き方をお教えいただけますでしょうか。
2。正規表現が難しいのであれば、力ずくでやるのでこの「(」全角丸カッコの始まりの検知方法をお教えいただけますでしょうか。

PHPの実行環境は、
PHP5.3
mbstring.language  japanese
mbstring.internal_encoding  UTF-8
mbstring.encoding_translation  ON
default_charset  UTF-8
UNIX 文字コード UTF-8
ソース文字コード UTF-8
です

どうぞよろしくお願いいたします。

投稿日時 - 2012-05-20 01:00:55

QNo.7485331

困ってます

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

>mb_convert_encoding($dataXML, "UTF-8", "EUC-JP");
>で、UTF-8に変更しております。

ちゃんと
$dataXML=mb_convert_encoding($dataXML, "UTF-8", "EUC-JP");
としていますか?

ちなみに正規表現であればこんなかんじ?
<?PHP
$str=file_get_contents("・・・");
$str=mb_convert_encoding($str,"UTF-8","EUC-JP");
$pattern="/(?<=().*?(?=))/";
preg_match($pattern,$str,$matches);
print $matches[0];
?>

投稿日時 - 2012-05-20 10:03:36

お礼

丁寧なご回答いただきましてありがとうございました。


>ちゃんと
>$dataXML=mb_convert_encoding($dataXML, "UTF-8", "EUC-JP");
>としていますか?

こちらは私の質問の書き方が寸足らずでした。申し訳ございません。
ちゃんとmb_convert_encodingしたものを$dataXMLへ代入しております。


いただきました、正規表現を試した所、無事動く事を確認しました。
ありがとうございます。
正規表現は呪文のようで避けて通っていたのですが、やはりプログラムをやる以上、
避けては通れないようですね… yambejpさんのご回答をみてそう思いました

本当にありがとうございました。 今後ともよろしくお願いいたします。

投稿日時 - 2012-05-21 01:14:09

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問