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

如果您希望每个值在其单独的变量中,您可以结合使用list(),如下所示:explode()

list($var1,$var2,$var3,$var4,$var5) = explode('|', $filename);
于 2012-11-26T20:12:42.087 回答
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 回答
0

您正在寻找explode()功能。

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

此外,管道是我能想到的几乎所有 shell 中的特殊字符,我强烈建议不要在文件名中使用它们。

于 2012-11-26T20:07:51.330 回答