1

可変幅のパイプ (|) で区切られたファイル名をテーブル データに変換しようとしています。

例えば

var1|var2|var3|var4|var5.pdf

になる

<table border="2" bordercolor="#ffffff" width="100%" cellpadding="10" cellspacing="10">
    <tr>
        <td>$var1</td>
        <td>$var2</td>
        <td>$var3</td>
        <td>$var4</td>
        <td>$var5</td>
    </tr>
</table>

私はそれまでとその後のすべてを持っていますvar1が、残りの変数を解析する方法がわかりません。これは私がタオルを投げて、ここに投稿することに決めた場所です:

$var1 = substr($file_name, 0, strpos($file_name, '|'));

アイデア?

前もって感謝します!

4

4 に答える 4

1

ファイル名ごとに変数を作成するのではなく、ファイル名を配列に分解することをお勧めしますが、とにかくこれを実現する方法のコード例を示しました。あなたの質問に正しく答えられたことを願っています。

<?php
    $string = 'var1|var2|var3|var4|var5.pdf';
    // Trim the string of dangling pipes to make sure we don't get empty array elements.
    $string = trim($string, '|');
    // Split the filenames into an array. Much more managable that way.
    $filenames = explode('|', $string);
    // Define an empty array to put our variables in.
    $variables = array();
    // Because the array we made is not associative we can iterate through with a for loop.
    for($i = 0; $i < count($filenames); $i++) {
        // Make our variable names start from one; much more human-friendly. Add them to an array to extract later.
        $var_name = 'var' . ($i + 1);
        $variables[$var_name] = $filenames[$i];
    }
    // Extract the values of the array and place them into variables named after the array keys.
    extract($variables, EXTR_OVERWRITE);

これにより、次の変数が作成されます (その値とともに)。

$var1 = 'var1';
$var2 = 'var2';
$var3 = 'var3';
$var4 = 'var4';
$var5 = 'var5.pdf';
于 2012-11-26T20:20:42.173 に答える
1

explode()次のように、 を使用してすべてのフィールドを配列に入れることができます。

PHP

<?php
$data = "var1|var2|var3|var4|var5.pdf";
$fields = explode("|", $data);
var_dump($fields);
?>

出力

array(5) { [0]=> string(4) "var1" [1]=> string(4) "var2" [2]=> string(4) "var3" [3]=> string(4) "var4" [4]=> string(8) "var5.pdf" } 
于 2012-11-26T20:09:04.733 に答える
1

次のように、個別の変数に各値が必要な場合はlist()、と組み合わせて使用​​できます。explode()

list($var1,$var2,$var3,$var4,$var5) = explode('|', $filename);
于 2012-11-26T20:12:42.087 に答える
0

あなたはその機能を探していexplode()ます。

$parts_arr = explode('|', $filename);
var_dump($parts_arr);

また、パイプは、私が考えることができるほぼすべてのシェルで特殊文字であるため、ファイル名に使用しないことを強くお勧めします。

于 2012-11-26T20:07:51.330 に答える