アトム-サイト
[ アトム-サイト ] - 管理人さんのページです。
feed-icon RSS2.0   feed-icon Atom
[ php ] 一覧へ
正規表現
管理人さんのブログ 2008-04-02 16:48:24

プログラマーだと正規表現使わずともちょこっとプログラム書けば色々出来てしまうので、今までほとんど正規表現使う事がなかった。

今回、1行で書けそうな処理だったので、勉強しつつ挑戦(プログラムだとその何倍にもなるので…)。

入力された文字列を『空白』と『ダブルクォーテーション』で分割します。
検索エンジンで『blog "atom site"』みたいに入力するそのキーワード取得です(この例だと「blog」「atom site」がキーワード)。

以下、試行錯誤のアレコレです(書き込みの関係上、半角を全角にしてあります)。
動かないのもあります。
$cut_strs = mb_split(’[¥s]’, $in_str);
mb_ereg(”[¥s]”, $in_str, $cut_strs);
preg_match_all(’|”([^”]*)”(?=[¥s,]+)[¥s,]+|U’, $in_str, $cut_strs);
preg_match_all(”|<[^>]+>(.*)</[^>]+>|U”, $in_str, $cut_strs);
preg_match_all(’|<b>(.*)<¥/b>|U’, $in_str, $cut_strs);
preg_match_all(’|a(.*)b|U’, $in_str, $cut_strs);
preg_match_all(’|”(.*)”|U’, $in_str, $cut_strs);
preg_match_all(’/(”[^”]*(?:””[^”]*)*”/u’, $in_str, $cut_strs);
preg_match_all(’/¥¥G(”(?:[^”]|””)*”|[^¥s]*)¥s/u’, $in_str, $cut_strs);
preg_match_all(’/¥¥G(”(?:[^”]|””)*”|[^  ]*)[  ]/u’, $in_str.” ”, $cut_strs);

単純にmb_split()では出来なさそう。
mb_ereg()でなくpreg_match_all()を使うのは処理が早い(らしい)から(//uオプションを使えば、UNICODE対応しているらしい)。

…で、近い正規表現はこれ!
preg_match_all(’/(”(?:[^”]|””)*”|[^  ]*)[  ]/u’, $in_str.” ”, $cut_strs);

preg_match_allは、分割した語句は配列の[1]に入るみたいです。

if($cut_strs[1]) {
foreach($cut_strs[1] as $cut_str) {
 //ダブルクォーテーションが入るので削除します
 $cut_str = preg_replace(’/[”]/u’, ’’, $cut_str);

こんな感じにしました。

それにしても、分かりづらいですねぇ『正規表現』って。
何書いてあるのか、一見して分からない。


※ 『php』に繋がる関連物を 視覚的に探しだせるサイトを作ってみました(よろしければクリックしてみてくださいね)。

 コメント記入者:

 リンク元:
(1) : http://www.google.co.jp/search?hl=ja&rlz=1B3GGGL_jaJP324JP324&q=%E3%83%80%E3%83%96%E3%83%AB%E3%82%AF%E3%82%A9%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+ruby%E3%80%80%E9%99%A4%E5%8E%BB%E3%80%80%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&btnG=%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?q=mb_split%E3%80%80%E5%85%A8%E8%A7%92&btnG=%E6%A4%9C%E7%B4%A2&hl=ja&lr=&rlz=1G1GGLQ_JAJP267&sa=2
(1) : http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox&rls=org.mozilla:ja-JP-mac:official&q=foreach+preg_match_all&start=50&sa=N
(1) : http://www.google.co.jp/hws/search?hl=ja&q=in_str+php&client=fenrir&adsafe=off&safe=off&lr=lang_ja
(1) : http://www.google.co.jp/search?hl=ja&rlz=1T4GGIH_jaJP230JP230&q=php+%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE+%E3%83%80%E3%83%96%E3%83%AB%E3%82%AF%E3%82%A9%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&start=10&sa=N

 ページ閲覧者数:15人

[ php ] 一覧へ


<< 2009年11月
2009年11月21日(土)
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

 最近の書き込み

パソコンショップ
  <2009-11-21 06:56:01>
ネットコマンド
  <2009-11-20 10:30:10>
Linuxコマンド
  <2009-11-18 11:44:56>
家のパソコン
  <2009-11-17 17:25:58>
ROUND 1 (豊橋)
  <2009-11-17 07:49:50>
nPOPs
  <2009-11-15 07:40:23>
打ちっぱなし
  <2009-11-13 15:21:35>
胃カメラ
  <2009-11-13 15:10:33>
T-01A
  <2009-11-13 10:02:41>
画面キャプチャ
  <2009-11-13 07:01:33>


 カテゴリー

おでかけ(67)
サッカー(41)
季節(32)
食べ物(30)
旅(28)
家(28)
映画(26)
地元(25)
DIY(24)
家族(21)
学校(20)
モバイル(20)
生物(20)
健康(19)
Web(17)
風景(17)
ドラマ(17)
通勤(16)
ブログ(14)
Winアプリ(14)
家電(13)
ゲーム(12)
足技(12)
ブラウザ(11)
本(11)
ゴルフ(10)
自転車(10)
Linux(10)
php(9)
 ・ REST SOAP
 ・ ダウンロードできない
 ・ zip
 ・ 画像リサイズ
 ・ 正規表現
 ・ session廃棄
 ・ 価格にカンマ
 ・ php.ini
 ・ アップロードデータのサイズ
javascript(9)
PCハード(9)
ネットワーク(8)
飲み物(8)
会社(8)
感銘映像(6)
税金(5)
空想(5)
VMware(4)
Ruby(4)
データベース(3)
perl(1)