Entries


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

-件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

-件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1185-73616132

php:全角スペースを半角スペースに置換などなど


全角スペースを半角スペースへの変換ニーズが生まれてしまいました.元はというとフォームに投げられた複数単語のワード列を最初と最後の単語だけとりたいと考えたところから始まったわけですが,たったそれだけだというのに全角スペースではまることになるとはなかなか面白いですね.というより前も同じようなところではまったような気がします.

全角スペースを半角スペースに置換して空白を詰める例を書いてみたのでソースを見てみましょう.

出力
サブプライム
建物

まずは以下のようなワードがフォームに投げられたとき,最初のワードと最後のワードだけを取り出したいと考えました.

$palam ="サブプライム 不動産 ビル 土地 建物";

ここでは『サブプライム』と『建物』というワードが取れればOKです.正規表現はあまり自信がないんですけど,とりあえずスペースより後ろと前を削除してあげればいいのではないかと考えました.

$pattern_f = "/\s.*$/";
$pattern_l = "/^.*\s/";
$replacement = "";

$first = preg_replace($pattern_f, $replacement, $hoge);
$last = preg_replace($pattern_l, $replacement, $hoge);

そして先頭からスペースまでと後ろからスペースまでを指定するパターンを書きました.これで間違いなく動きました.

ところが,

これは上に書いてある$palamのように全角スペースが入っているとうまく動きません.

困りました.

困ったので全角スペースを変換することにしました.

色々検索してみるとこんなのを見つけました.

$str = preg_replace('/\s+/', ' ', $str);

引用:PHP:半角スペース、全角スペース、タブなどの空白文字を半角スペースに置換したい。(連続していてもOK)


なるほどですね.簡単です.

しかし実際にやってみると動きません.そりゃそのはずです.このコードは半角スペースの連続を一文字の半角スペースに変換するコードですからね.まず全角スペースを半角スペースにしないといけません.ということでもうちょっと検索してみるとこんなのを見つけました.

string mb_convert_kana ( string $str [, string $option [, string $encoding ]] )
文字列 str に関して「半角」-「全角」変換を行います。 この関数は、日本語のみで使用可能です。

s 「全角」スペースを「半角」に変換します(U+3000 -> U+0020)。
引用:mb_convert_kana


mb_convert_kana()なんて便利なものがあるんですね.知りませんでした.ということでオプションで"s"を選択してあげれば全角スペースが半角スペースに変換され一気に色々解決してしまいました.要するにpreg_replace()する前にmb_convert_kana()をしてあげれば半角スペースを認識してくれるみたいです.

PHP 逆引きレシピ (PROGRAMMER’S RECiPE)PHP 逆引きレシピ (PROGRAMMER’S RECiPE)
(2009/06/30)
鈴木 憲治安藤 建一

商品詳細を見る

0件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1185-73616132

Appendix

プロフィール

川崎修

  • Author:川崎修
  • インターネット大好き!
    調布周辺で自宅警備してます



    メール:pugiemonn@gmail.com
    skype:pugiemonn
    twilog:Twilog
    mixi:mixi
    facebook:facebook
My Profile by iddy
FC2ブログ

カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

最近の記事

Twitter

コミュニティ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Adsense

月別アーカイブ

はてぶ数

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。