PHP 中删除分隔符后如何显示数组中的数据?
How to display data from array after removing delimiters in PHP?
我创建了一个 HTML 表单,用户可以在其中上传文本文件,上传后,文本文件的内容将显示在同一页面中。示例文本文件的内容格式如下:
"last_name(空格)first_name(空格)middle_initial", "性别", "年龄"**
例如 "ADKINS(空格)ADELE(空格)L", "F", "26"
姓氏、名字和中间名首字母以空格分隔。我想要实现的输出是这样的:
Last Name: ADKINS
First Name: ADELE
Middle initial: L
Gender: F
Age: 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>'`
似乎最简单的方法实际上是这样的:
$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>'`
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>';
}
}
}
如果你想使用正则表达式,你可以使用下面的代码
preg_match_all("/(\w|\d)+/", $data, $output);
print_r($output[0]);
我创建了一个 HTML 表单,用户可以在其中上传文本文件,上传后,文本文件的内容将显示在同一页面中。示例文本文件的内容格式如下:
"last_name(空格)first_name(空格)middle_initial", "性别", "年龄"**
例如 "ADKINS(空格)ADELE(空格)L", "F", "26"
姓氏、名字和中间名首字母以空格分隔。我想要实现的输出是这样的:
Last Name: ADKINS
First Name: ADELE
Middle initial: L
Gender: F
Age: 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>'`
似乎最简单的方法实际上是这样的:
$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>'`
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>';
}
}
}
如果你想使用正则表达式,你可以使用下面的代码
preg_match_all("/(\w|\d)+/", $data, $output);
print_r($output[0]);