1

ファイル名をキャッチしてファイルする方法

入力:

news.jpg
news_1.png
asnews_2.gif
asnews_3.jpeg
aw_news_4.jpg
aw_news.gif

アウトアウト:

Array
(
[0] => Array
    (
        [0] => news
        [1] => news_1
        [2] => asnews_2
        [3] => asnews_3
        [4] => aw_news_4
        [5] => aw_news
    )

[1] => Array
    (
        [0] => 
        [1] => 1
        [2] => 2
        [3] => 3
        [4] => 4
        [5] => 
    )

[2] => Array
    (
        [0] => news
        [1] => news
        [2] => asnews
        [3] => asnews
        [4] => aw_news
        [5] => aw_news
    )

)

PHP でpreg_match_allpreg_replace_callbackを使用してみましたが、正しく使用する方法がわかりません。

preg_match_all('/(?: _???_ (?:_([\d]+))?$/im', $fullname, $result);  // $fullname - string

これは同様の例です - /(?:(?:_([\d]+))?(.[^.]+))$/。これは変更できます。

4

3 に答える 3

2
$result = array (array (), array (), array ());

$dir = opendir ("/tmp");
while (($file = readdir ($dir)) !== false)
{
  if ($file == '.' || $file == '..') continue;

  $matches = array ();
  preg_match ('/^(([^.]*?)(?:_([0-9]*))?)(?:\.|$)/', $file, $matches);

  $result [0][] = $matches [1];
  $result [1][] = $matches [3];
  $result [2][] = $matches [2];
}
closedir ($dir);

print_r ($result);

出力は次のとおりです。

Array
(
    [0] => Array
    (
        [0] => news
        [1] => news_1
        [2] => asnews_2
        [3] => asnews_3
        [4] => aw_news_4
        [5] => aw_news
    )

    [1] => Array
    (
        [0] =>
        [1] => 1
        [2] => 2
        [3] => 3
        [4] => 4
        [5] =>
    )

    [2] => Array
    (
        [0] => news
        [1] => news
        [2] => asnews
        [3] => asnews
        [4] => aw_news
        [5] => aw_news
    )
)
于 2013-02-26T09:45:15.360 に答える
0

basename()関数を使用して、拡張子なしでファイル名を取得します。

  • basename()—パスのファイル名コンポーネントを返します
于 2013-02-26T09:39:31.830 に答える
0

explodephpで関数を試してください。文字列にファイル名が含まれていることを確認してください。「。」を使用してください。展開デリメータとして、展開された配列を抽出してファイル名を取得します。

explodeマニュアルに関するリファレンスについては、これを試してください

http://php.net/manual/en/function.explode.php

于 2013-02-26T09:38:01.890 に答える