dポイントプレゼントキャンペーン実施中!

こんにちは

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
です

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

A 回答 (1件)

>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];
?>
    • good
    • 0
この回答へのお礼

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


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

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


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

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

お礼日時:2012/05/21 01:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!