2012-04-28 10 views
0

のように私はpathesとファイルのリストからファイル名を抽出しようとしています"/"はjpegファイルです( ".jpg"で終わります)。 この例では、「file1」のみが有効な一致となります。私は、この正規表現を持っている瞬間ペソ正規表現またはベース名()

/(?<=\/)(.*?)(?=\.(js))/gim 

それが正規表現とか、(ベース名を持つ可能性/方が良い場合は、これを行う方が良いでしょう場合、私は本当に)知りません。

私が達成したい目標は、一致するすべての文字列を配列に配置することです。 私はこれをやっているのかどうか分かりません。

+1

さて、あなたはベース名を忘れることができます。 – jedwards

+0

regex> basename(私の意見) – Hajo

+0

Hum、ok。正規表現それは私が推測している。 –

答えて

1

正規表現はここでは必要ありません。私はあなたがあなたのパスを配列に取得できると仮定しました。

<?php 
    $text = file_get_contents("list.txt"); 

    $foo = explode(PHP_EOL, $text); 

    $bar = array(); 

     foreach($foo as $key => $value){ 
      if(pathinfo($value, PATHINFO_EXTENSION) == "jpg"){ 
       $bar[] = basename($foo[$key],".".pathinfo($value, PATHINFO_EXTENSION)); 
      } 
     } 

    print_r($bar); 
?> 

出力:

Array ([0] => file1) 

ライブ例:http://codepad.viper-7.com/ewkUHs

+0

まずはお返事ありがとうございます!私が実際に解析するブロックは.txtファイルであり、各行に内容としてのパスしか持たないので、これがうまくいくかどうかはわかりません。 –

+0

その場合、最初に配列を構築する必要があります。どのようにデータをスクリプトに取り込みますか?あなたが文字列でそれを持っているなら、これを行うことができます:$ lines = explode(PHP_EOL、$ content); $ linesは配列になり、explodeは文字列をEOL(行末)で分割します。$ contentパラメータは入力文字列です。 – IsisCode

+0

ファイルI/Oをまだコーディングしていませんでしたが、データをインポートすることはfopen()に感謝しました。 –