- ベストアンサー
正規表現でフォルダを抽出する方法 - PHP
- ディレクトリ内のフォルダのみを配列に抽出する方法を教えてください。
- perlの場合は「ピリオドを含まない」という条件を使って抽出できましたが、PHPではどのように書けばいいですか?
- 「^」を使えば否定の意味も持ちますが、同時に「先頭」という意味も持つため、うまく使いこなせませんでした。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- PHPの preg_grep関数(正規表現)について
こんにちわ, 今PHPで 配列$valに val[0]-> 'HOGE' val[1]-> 'HOGE' val[2]-> 'Time' val[3]-> 'Total' val[4]-> 'Time' val[5]-> '->' val[6]-> '00:00:02' と入っているときにpreg_grep関数を使用して,$time配列にval[6]の時間のフォーマットをした文字列を入れたいのですが, $time = preg_grep("/(..):(..):(..)/",$val6); としても,$time[0]にはうまく入りません。 どこが悪いのでしょうか。 ちなみに,正規表現のいいHPなどがあればついでに教えてください。 よろしくお願いします。
- ベストアンサー
- PHP
- 正規表現について
HTMLファイルを読み込み、特定の文字列にリンクを付けて出力したいのですが上手くいきません。 例: <img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に正規表現を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。 ↓正規表現をキーワードにしてリンクを付けたい。 正:<img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。 誤:<img src="./seiki_hyougen.gif" alt="<a href="seiki_hyougen.html">正規表現</a>についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html"><a href="seiki_hyougen.html">正規表現</a>の詳しい説明</a>をクリックして下さい。 尚、下記URLのサンプルを参考にしてスクリプトを作成しています。 http://php.oss.eznetsols.org/manual/ja/function.preg-split.php $r = preg_split('((\/a>)|(<a))', $html, -1, PREG_SPLIT_DELIM_CAPTURE); for ($i = 0; $i < count($r); $i++) { if ($r[$i] == "<a") { $i++; continue; } $r[$i] = preg_replace( "/(正規表現)/i", "<a href='seiki_hyougen.html'>\\1</a>", $r[$i] ); } return join("", $r); この(正規表現)の部分で上手い正規表現を使えばalt="×××"の中にリンクタグが入らないようにできるのでは?と思っているのですが・・・。 どうか、良い方法を教えて下さい。よろしくお願いいたします。
- ベストアンサー
- PHP
- 正規表現で一発置換できるでしょうか?
サイトにあるHTMLを読み込み、その中のリンク全てに target指定を追加して表示するPHPについてアドバイスをお願いします。 取込元のHTMLは↓な記述(全リンクにtarget指定は無い) … <a href="http://bakubaku.com">ばくばく</a> … … <a href="http://mogumogu.net">もぐもぐ</a> … … <a href="http://karikari.org">かりかり</a> … これを、↓のように変換して出力したい <a href="http://bakubaku.com" target="_brank">ばくばく</a> <a href="http://mogumogu.net" target="_brank">もぐもぐ</a> <a href="http://karikari.org" target="_brank">かりかり</a> とりあえず、 ・<a href…> のリストを preg_match_allで 抽出 ・要素数だけ 末尾の > を target="_brank"> に変換/入替 といった処理で結果は正しく出ますがパフォーマンス的に痛いですよね。 このような検索置換処理を、正規表現を使って、一発でできないものでしょうか? (すみません、、正規表現よく分かっていません、、)
- ベストアンサー
- PHP
- 正規表現を用いてHTML内の文字列を抜き出したいのですが・・・
PHPの正規表現を用いて外部Webページのソース内にある文字列を抜き出してきたいのですがうまくいきません。 例えば、 <td class="nml">食べてきれいにやせる! 伊達式脂肪燃焼ダイエット / 伊達友美<br></td> のようなタグに挟まれた文字列を抜き出します。自分で書いたプログラムは以下の通りです。 <?php //外部URL $fp = fopen("特定のURL", "r"); while(!feof($fp)){ //HTMLソースを全文取得 $line = fgets($fp, 1024); //各行を配列に格納 $line_array[] = $line; } //配列を一つの文字列に変換 $line_text = implode("", $line_array); if(preg_match_all('ここの部分が思いつきません', $line_text, $match)){ print $match; }else{ print 'マッチしません'; } ?> 色々と調べて試行錯誤しましたが、結局うまくいきませんでした。 正規表現となる部分をどなたかご教授頂けないでしょうか。宜しくお願い致します。
- ベストアンサー
- PHP
- 正規表現について(sed)
いつもお世話になっております。 下記のようなURLから、特定のパラメータ以外はすべて除去したいのです。 http://XXX.jsp?rank=6&uid=aaaabfadfddfd&k=open&serial=12345&pr=ABC 残したいパラメータは k= a= pr= です。 s/[&?]\([k]\|[a]\|[pr]\\)=[0-9a-zA-Z%_-]\+//g この表現で、なんとか残したいパラメータを除去するのはできました。 「これ以外」という表現ができれば、望みの結果になると思うのですが、 いろいろ試してもうまくいきませんでした。 そもそも考え方が違うのかもしれないですが。。。 申し訳ありませんが、お詳しい方教えていただけると非常に助かります。 よろしくお願いいたします。 すみません、先ほどPHPでの処理でどうにかならないかと思い、 別の似たような質問を投稿してしまいました。 今回はLinuxのsedコマンドでの処理になるので、あえて別の投稿させていただいています。 申し訳ありません。。。 正規表現について(preg_replace) http://okwave.jp/qa/q7125468.html
- ベストアンサー
- その他(プログラミング・開発)
- 先頭にindex.phpを含まない正規表現の置換
IISサーバーのRewriteモジュールを使用したURLの置き換えで正規表現がわからず困っております。 Concrete5の機能「プリティーURLを使用する」にて、IISサーバーは.htaccessが使えなく、代わりにweb.configを使う方法があると知ったのですが、正規表現がわからずに困ってます。 1時間ほど試行錯誤しながら正規表現の勉強してますが、それでもできません。 index.phpを先頭に含まない文字列を検索する正規表現を教えていただけないでしょうか
- ベストアンサー
- ハードウェア・サーバー
- 改行なしテキストからの任意文字列の抽出方法
複数(何万件レベル)の.htmlファイルから、<img>タグの書かれた箇所、つまり <img src=".+"> を含む箇所が何箇所あって、どういう画像の参照があるのかを抽出したいのですが、困ったことにその.htmlファイルには改行が一切ありません。 今は秀丸のgrepを使用して試行錯誤しているのですが、 <img src=".+"> を含むファイル名とその行を表示しても途中で文字列が切れてしまうので、grepの結果に現れるのはせいぜい数個となり、正確に何箇所あるのか、抽出できずに困っています。 何かよい方法はないでしょうか? みなさまのご回答をお待ちしております。
- ベストアンサー
- その他(インターネット・Webサービス)
- 条件付きディレクトリツリー表示について
ある条件(例えばパーミッションや更新日付)でファイルを抽出し、ディレクトリツリーを表示したいと思っています。 http://www.sound-uz.jp/php/tips/file.html のページを参考(ディレクトリツリーの部分)に作っているのですが、条件を元にファイルを配列に入れても、そのフォルダに条件に当てはまるファイルが一つも無い(要素が無い)場合にもフォルダは表示されてしまいます。 配下にマッチするファイルが一つも無い場合は、上位のフォルダも表示させないようにするにはどうしたらいいのでしょうか? かなり困っていますのでご教授お願いします。 ---参考にプログラム掲載------ function showdirtree( $tree ) { if( !is_array( $tree ) ) // 配列でなければ false を返す return false; static $count = 0; // インデントの階層の深さ $indent = ( $count ) ? str_repeat( " ", $count ) : ""; $count++; foreach( $tree as $key => $value ) { if( is_array( $value ) ) { // 配列の場合ディレクトリ名を表示し再帰呼出 print( $indent."+ " . $key . "<br>\n" ); showdirtree( $value ); } elseif( preg_match( "/.*(\.html|\.txt|\.php)$/i", $value ) ) { // HTMLとTEXTとPHPのみアンカーをつけてファイル名を表示 print( $indent."- <a href=\"" . $value . "\" target=\"view\">" . $key . "</a><br />\n" ); } } $count--; return true; }
- ベストアンサー
- PHP
- Bシェルでのif文について
あるファイルからgrepコマンドで抽出し、その値を変数に 入れてその値がNULLが確認したいのですが、うまくいきません。 どのようにすればNULLとして比較できますでしょうか。 ・「File」という名のファイル Period: Count: ※本来ならば「:」の後に数字が入るが 入っていない場合にはエラーとしたい ・grepの条件 TEST=`grep "^Period" File | cut -f 2 -d":"` ・if文 if [ ${TEST} != NULL ] then echo "ERROR" fi
- ベストアンサー
- その他(プログラミング・開発)
- 検索値から、その行の抽出。
検索値から、その行の抽出。 シート1のデータがあります。 シート2のA1に検索値を置き、“あああ”の行をシート2に抽出。 シート2のA列に任意の番号を振った後、その番号順での表示(ピンク部分)を希望。 自分でいろいろと調べて試行錯誤したのですが、 思うようにいかず、ご質問させていただきます。 ご回答よろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
お礼
このような方法があったのですね。 聞いてよかったです。 本当に助かりました!