我创建了一个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>'`
答案 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]);