PHPで

「○(全角記号)abcdefgあいうえお」
「abcdefg○(全角記号)あいうえお」
このような文字列中から全角記号だけを検索して
最終的に「abcdefgあいうえお」と全角記号を抜いた文字列を取得するにはどのような方法があるでしょうか
文字コードはUTF-8です

回答の条件
  • 1人3回まで
  • 登録:2008/02/27 22:56:44
  • 終了:2008/02/28 00:49:38

回答(1件)

id:tezcello No.1

tezcello回答回数460ベストアンサー獲得回数692008/02/27 23:54:20

ポイント60pt

全角記号が「○」だけなら、それを削除するように

$str = array('○abcdefgあいうえお', 'abcdefg○あいうえお');
$result = preg_replace('/○/', '',$str);

半角小文字とひらがなに注目するなら、それら以外を削除するように

(ちなみに、こちらの場合だと、「(全角記号)」があってもOKです)

$str = array('○(全角記号)あいうえお', 'abcdefg○(全角記号)あいうえお');
$result = preg_replace('/[^a-zぁ-ん]/u', '',$str);
id:cryonics

ありがとうございます。

上のままだとうまくいきませんでしたが

文字コード変換をかませて解決できました

2008/02/28 00:48:45
  • id:tezcello
    > 文字コード変換をかませて解決できました
    具体的にどういう事でしょう。参考までに教えて頂けませんか?
  • id:cryonics
    すみません。コメントを見逃してました。

    私の場合、エディタはSJISで記述してるのですが、検索対象の$strに入ってくる文字列はUTF-8だったので全角記号がうまく検索できなかったのではないかと思います。だとすると、おそらく全角記号だけでなく全角文字はすべて検索できなかったのかもしれません。

    まず検索キーとなる'○'をUTF-8に変換してからpreg_replaceすることで上手くいきました

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません