如何在删除PHP中的分隔符后显示数组中的数据?

时间:2016-01-21 17:11:30

标签: php html arrays parsing html-parsing

我创建了一个HTML表单,用户可以上传文本文件,上传后,文本文件的内容将显示在同一页面中。示例文本文件的内容格式如下:

“last_name (空格) first_name (空格) middle_initial”,“性别”,“年龄”**

例如“ADKINS (空格) ADELE (空格) L”,“F”,“26”

最后一个名字和中间名首字母用空格分隔。我想要实现的输出是这样的:

  

姓氏:ADKINS

     

名字:ADELE

     

初中:L

     

性别:F

     

年龄:26

我已使用函数preg_split删除引号和逗号。我还将文本文件的内容存储在一个数组中。我的问题是每当我显示数组中每个索引的值时,我只会得到 ADKINS 。不显示名字和中间名,因为它位于不同的阵列位置。 [此部分已解决:此外,我无法显示性别和年龄。]

这是我显示信息的代码:

foreach($rows as $row => $data){
$row_data = preg_split('/[",]/',$data);

$info[$row]['lastname'] = $row_data[1];
$info[$row]['firstname'] = $row_data[2];
$info[$row]['middle'] = $row_data[3];
$info[$row]['gender'] = $row_data[4];
$info[$row]['age'] = $row_data[5];  

echo 'Last Name: ' . $info[$row]['lastname'] . '<br>'
echo 'First Name: ' . $info[$row]['firstname'] . '<br>'
echo 'Middle Initial: ' . $info[$row]['middlename'] . '<br>'
echo 'Gender: ' . $info[$row]['lastname'] . '<br>'
echo 'Age: ' . $info[$row]['lastname'] . '<br>'`

3 个答案:

答案 0 :(得分:0)

似乎最简单的方法实际上就是这样:

$row_data = explode(',', $data);
$row_data = str_replace('"', '', $row_data);
$names = explode(' ', $row_data[0]);

echo 'Last Name: ' . $names[1] . '<br>'
echo 'First Name: ' . $names[0] . '<br>'
echo 'Middle Initial: ' . $names[2] . '<br>'
echo 'Gender: ' . $row_data[1] . '<br>'
echo 'Age: ' . $row_data[2] . '<br>'`

答案 1 :(得分:0)

foreach($rows as $data) {
    $arr = json_decode("{".$data."}");

    if(count($arr) == 3) {
        $names = explode(' ', $arr[0]);

        if(count($names) == 3) {
            echo 'Last Name: ' . $names[1] . '<br>';
            echo 'First Name: ' . $names[0] . '<br>';
            echo 'Middle Initial: ' . $names[2] . '<br>';
            echo 'Gender: ' . $arr[1] . '<br>';
            echo 'Age: ' . $arr[2] . '<br>';
        }
    }
}

答案 2 :(得分:0)

如果您想使用正则表达式,可以使用以下代码

preg_match_all("/(\w|\d)+/", $data, $output);
print_r($output[0]);