【问题标题】:How to display data from array after removing delimiters in PHP?删除PHP中的分隔符后如何显示数组中的数据?
【发布时间】:2016-01-21 17:11:29
【问题描述】:

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

"last_name(空格)first_name(空格)middle_initial"、"gender"、"age"**

例如 "ADKINS(空格)ADELE(空格)L"、"F"、"26"

姓氏、名字和中间名的首字母由空格分隔。我想要实现的输出是这样的:

姓:阿德金斯

名字:阿黛尔

中间声母: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>'`

【问题讨论】:

    标签: php html arrays parsing html-parsing


    【解决方案1】:

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

    $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>'`
    

    【讨论】:

      【解决方案2】:
      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>';
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2015-02-08
          • 1970-01-01
          • 1970-01-01
          • 2013-01-17
          • 2012-01-11
          • 2015-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多