- ベストアンサー
正規表現 先頭一桁をマッチさせるには
$a = (1001,xxxx,yyyy) とします。 先頭一桁の値を使いたいのですが、 $a = explode(',',$buffer); preg_match("/(.)*/",$a[0],$match)とすると、 $a[1]の値は下一桁になります。 先頭一桁にするには、どうすれば良いのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- hogehoge78
- ベストアンサー率80% (433/539)
- okmotokun
- ベストアンサー率59% (92/155)
- hogehoge78
- ベストアンサー率80% (433/539)
- hogehoge78
- ベストアンサー率80% (433/539)
関連するQ&A
- 日付をすべて2桁(07/02、 06/30)にしたい
a.html内にある日付のデーターを取ってきて日付をすべて2桁(もし 7/2 ならば 07/02 、6/30 ならば 06/30)にしたいのですが、なかなかうまくいきません。 自分で作ったプログラムa.phpでは最初の日付しか2桁になりませんでした。 -------------a.html--------------- <>06/25、7/2<>13:00~13:55<>あああああ<> <>06/25、8/2<>19:00~20:00<>いいいいい<> <>6/27<>19:00~21:48<>ううううううう<> <>06/27、7/3、7/4、7/12<>19:58~20:54<>ええええええええ<> <>7/1<>13:54~17:00<>おおおおおおお<> --------------a.php---------------- <? $filename = "a.html"; $filedata = @file($filename); $filedata = @join("",$filedata); preg_match_all('/(<>(.*?)<>.*<>.*<>)/',$filedata, $match); for($i=0;$i<count($match[0]);$i++){ $match[2][$i] = explode("、", $match[2][$i]); //////////この辺がうまくできない/////// for($m=0;$m<count($match[2][$i]);$m++){ $match[2][$i][$m] = explode("/", $match[2][$i][$m]); $match[2][$i][$m][0] = sprintf("%02d", $match[2][$i][$m][0]); $match[2][$i][$m][1] = sprintf("%02d", $match[2][$i][$m][1]); $match[2][$i][$m] = $match[2][$i][$m][0]."/".$match[2][$i][$m][1]; $match[2][$i] = join("、",$match[2][$i]); } print $match[2][$i]."<br>";//←最後はこの形で表示できるようにしてもらいたいです// } ?> どなたか教えてください。m(_ _)m よろしくお願いします。
- ベストアンサー
- PHP
- += -= *= /= を判別する正規表現
PHP5.2.4を使用しています。 $key = 'a +='; $val = 2; の場合に、 a = a + 2 となるように変換するためには preg_match(ここに何か記述, $key, $match)を使ってどのように記述すれば良いのでしょうか? 例えば、次の条件だったら $key = 'a -='; $val = 2; a = a - 2 と変換したいです。 if (preg_match(ここに何か記述, $key, $match)) { ここで$keyと$valと$matchを使って a = a (+ or - or * or /) 2となるように記述すると思うのですが }
- ベストアンサー
- PHP
- PHP 複数行の正規表現
複数行にわたる正規表現についてです。 mオプションを使うとありますが、うまくいきません。 [改行が無い場合] $val=$pattern_url="/<a>(.*?)<\/a>/m"; preg_match_all($pattern_url,"<a>ABCD</a>",$match_url,PREG_SET_ORDER); だと 1 ABCD が出力されます。 [改行がある場合] $val=$pattern_url="/<a>(.*?)<\/a>/m"; preg_match_all($pattern_url, "<a>AB CD</a>", $match_url,PREG_SET_ORDER); 出力結果は 0 宜しくお願いいたします。
- ベストアンサー
- PHP
- 正規表現の文字化け?で困っています。
preg_matchで、条件を変数で定義したいのですが、うまくいきません。 すみませんが、教えてください。 $str = "hoge.php?a=10&b=3"; から"a=10"をマッチさせる場合。 preg_match('/^(.*(\?|&))(a=.*)(&.*)*$/', $str); で、一応うまくいきます。 マッチ条件を状況により変更させるため、まずは、 $con = "'/^(.*(\?|&))(a=.*)(&.*)*$/'"; preg_match($con, $str); のようにしたいのですが、なぜかマッチしてくれません。 すみませんが、対策方法の分かる方がいらっしゃましたら、ご教授の程、よろしくお願いいたします。
- ベストアンサー
- PHP
- http://とhttps://のどちらでもマッチングできる正規表現
http://とhttps://のどちらでもマッチングできる正規表現の書き方が分かりません。aタグの中のhref="のあとのURL部分にhttpでもhttpsのどちらでもOKのマッチングをかけたいです。 具体的にはhttp://www.aaa.co.jpでもhttps://www.aaa.co.jpのどちらでもpreg_match_allでマッチングをかけたいです。 $count=preg_match_all("正規表現",$URL,$maches); という感じでhttpかhttpsのURLに引っ掛けたいです。 教えてください
- ベストアンサー
- PHP
- カンマ区切りの金額を検索するための、正規表現を教えてください
PHP4を使っています。 表題のとおりなのですが、 カンマ区切りの金額を検索するための、正規表現を教えていただけないでしょうか? http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-3-14.html を参考に、 $pattern = '^(0|([1-9][0-9]{0,2}(,[0-9]{3}){0,2}))$'; if (preg_match("/$pattern/", $oneline_buffer, $matches)){ としているのですが、 なぜかpreg_matchにひっかかりません。 (preg_match の直前の行を通っていることは、確認済みです) どなたか、お助け願えれば幸いです。
- ベストアンサー
- PHP
- 正規表現の書き方について
$a=aaaaaaあああ1111いいい2222; 上記の$aを <br>aaaaa<br>aあああ<br>1111いいい<br>22222<br> このようにしたいのですが、 条件1:半角英数字の頭に<br> 条件2:半角英数字が5つ続いたら<br> としたいのですが、正規表現の記述方法で悩んでいます。 $b=preg_match([a-zA-Z0-9],$a)がに該当したら これで受け取ったものをpreg_replace<br>で挟む?のでしょうか。 そもそも条件は1つ以上指定できないのかもしれませんが・・・。 何かご存知の方いましたらご教授お願いいたします。
- ベストアンサー
- PHP
- 正規表現について
人名を漢字、平仮名、アルファベットでカンマ区切りでcsvファイルに保存したものがあるとします。 それで例えば、平仮名で一番初めが「あ」の人だけを表示させたいプログラムを書きたいのですがなかなかうまくいきません。 正規表現の使い方もいまいちわかっていなく、とりあえず全て平仮名かどうか調べるプログラムを、 http://phpspot.net/php/pg%90%B3%8BK%95%5C%8C%BB%81F%82%B7%82%D7%82%C4%82%D0%82%E7%82%AA%82%C8%82%A9%82%C7%82%A4%82%A9%92%B2%82%D7%82%E9.html のサイトからコピーして作成してみたのですが、表示されませんでした。 以下が作成したものです。 <?php $handle = fopen("csv.csv", "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 4096); list($kanji,$hiragana,$alphabet) = explode(",", $buffer); if(mb_ereg("^[あ-ん]+$",$hiragana)){ $output .= "$kanji<BR>\n"; } } } fclose($handle); echo $output; ?> もし出来ましたら、先頭が「あ」だけを表示する正規表現の表し方なども教えていただけると助かります。 お願いします。
- ベストアンサー
- PHP
- 正規表現preg_match('#^(?:[a-z
preg_match('#^(?:[a-z0-9\-]+\.){1,}[a-z]{2,}$#i', $hoge)の意味を教えて ・#iなので、デリミタは#。大文字小文字は無視 ・先頭に、【「:(英数字ハイフンが1回以上).」が、0回または1回の出現】が1回以上の繰り返し ・続いて、英字が2回以上の繰り返し と思い、 :123a-.ss てやってみたのですが、0が返ってきました。 この正規表現の意味と、 この場合、どんな文字列が当てはまるか知りたいです
- ベストアンサー
- PHP
- 正規表現 preg_match_all
$c = preg_match_all('@href="/Top/World/Japanese/(?P<query>.*?)">(?:<b>|)(?P<cate>.*?)(?:</b>|)</a>@s', $buf,$match,PREG_SET_ORDER); print_r($match); の(?:<b>|)と(?:</b>|)の部分がまちがっているので、<b></b>タグがあってもなくてもいい場合にマッチさせることができないと思っています。 どうか教えてくださいませ。 ちなみにPHPの5.2.2です。
- ベストアンサー
- PHP
補足
先頭一桁の検索は、/^(.)/ か /(.)?/、/(.).*/、/(.)/ですか。 ありがとうございます。 (.)*と(.)?と(.).*と(.).*? は、どのような意味なのでしょうか? ちょっと違いますが、下記を実行すると <?php $var="Japan America France England"; if(preg_match("/\b([AIUEOaiueo]*)\b/",$var,$result)){ print_r($result); print("<br>"); }else{ print(一致しませんでした。); } if(preg_match("/\b([AIUEOaiueo]?)\b/",$var,$result)){ print_r($result); print("<br>"); }else{ print(一致しませんでした。); } if(preg_match("/\b([AIUEOaiueo].*)\b/",$var,$result)){ print_r($result); print("<br>"); }else{ print(一致しませんでした。); } if(preg_match("/\b([AIUEOaiueo].*?)\b/",$var,$result)){ print_r($result); print("<br>"); }else{ print(一致しませんでした。); } ?> 結果は、 Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => America France England [1] => America France England ) Array ( [0] => America [1] => America ) となりました。 (.)*は最長マッチ、(.)?は最短マッチだそうですが、何もセットされません。 ちょっとお手上げ状態になりました。 正規表現を覚えるのは、パターンでも覚えるのでしょうか? それとも、こういうのも理解しないといけないでしょうか?