人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのpreg_match_all関数についてです。

$pattern = "/<[^<]+>/";
$flag = preg_match_all($pattern,$str,$result);

こんな感じで<>の部分を抽出しようとしてますが、「っ」や「ー」や「(」などが入ると上手く拾いません。

これ↓
http://catfrog.net/PHP/affiliate_generater.php

原因は正規表現か、そもそもpreg_match_all関数がマルチバイトに対応してないせいだと考えています。

原因および対処方法(別の関数とか)ありましたらご教示いただきたく。

●質問者: catfrog
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:FLAG PHP STR バイト マルチ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● vector
●30ポイント

こちらを利用してみてはいかがでしょうか?

mb_ereg_match

http://php.s3.to/man/function.mb-ereg-match.html

◎質問者からの返答

この関数だとなんか上手く行かないんですよね、、。


2 ● SkullHeadArmor
●1ポイント

http://q.hatena.ne.jp

(><)ぼくはまちちゃん!

◎質問者からの返答

お逝きなさい!><


3 ● pxb12663
●29ポイント

http://php.nohup.it/manual/ja/function.mb-ereg-match.php

日本語などの2バイト文字を扱う場合はmb関数を使った方がいいようです。

ただし、PHPのバージョンが低いとmb関数がサポートされてない場合がありますので、お気をつけ下さい。

PHP5なら使えます。

◎質問者からの返答

マルチバイトはいっつも苦労します、、。


4 ● abunakunai
●30ポイント ベストアンサー

pregを使いたかったらphpの内部コード、およびあつかう値をutf-8で

あつかうといかがでしょうか?

utf-8は上記のような問題はありません。

また、pregでも

preg_match('# #', $str, $match);

みたいな/を#や!に変換しても動くので試すのもいいでしょう

$strに

http://jp.php.net/preg_quote

をかます、という手もあります

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ