【问题标题】:Parse pipe-separated string [duplicate]解析管道分隔的字符串[重复]
【发布时间】:2013-04-27 20:03:33
【问题描述】:

我有一个已解密的字符串已发布到我们的网站:

$data = "AQ487r3uiufyds.43543534|VISA|4539991602641096|123|12|15|123|USD|AARON|dr4387yicbekusglisdgc||ZYXW|1970|01|31|19070/01/31|NODIRECTION ROAD, 1111|7th floor apt 777|99999|NOWHERE|XX";

我需要获取这些数据并从以| 分隔的每个部分创建变量。

【问题讨论】:

  • 希望上面不包含真实的信用卡号!
  • 管道和变量与此没有太大关系。您的问题可以概括为“如何在 PHP 中按字符拆分字符串?”并将其直接输入 Google 会得到您想要的。
  • 不,这不是真实的卡号。

标签: php arrays string


【解决方案1】:

您要查找的函数是explode。它返回一个字符串数组,每个字符串都是第二个参数的子字符串,通过在字符串分隔符(第二个参数)形成的边界上拆分它而形成。

$data = "AQ487r3uiufyds.43543534|VISA|4539991602641096|123|12|15|123|USD|AARON|dr4387yicbekusglisdgc||ZYXW|1970|01|31|19070/01/31|NODIRECTION ROAD, 1111|7th floor apt 777|99999|NOWHERE|XX";
foreach (explode('|', $data) as $p)
    echo "$p<br>";

将输出:

AQ487r3uiufyds.43543534
VISA
4539991602641096
123
12
15
123
USD
AARON
dr4387yicbekusglisdgc

ZYXW
1970
01
31
19070/01/31
NODIRECTION ROAD, 1111
7th floor apt 777
99999
NOWHERE
XX

【讨论】:

    【解决方案2】:

    如果您先验地知道字符串的结构,并且如果您想要真正的命名变量(不仅仅是一个值数组),请使用 PHP 的 list 构造(带有 explode):

    $data = "AQ487r3uiufyds.43543534|VISA|4539991602641096";
    
    list($someCode, $cardType, $cardNumber)=explode('|', $data);
    
    var_dump($someCode);
    var_dump($cardType);
    var_dump($cardNumber);
    

    那么就不需要将临时数组(由explode 返回)存储在变量中。

    如果您需要一组值,只需按照其他答案中的建议使用explode

    【讨论】:

    • 我知道这可能是迂腐的,但考虑到字符串中似乎包含地址信息,并且地址格式各不相同(第 1 行、第 2 行、等等等等),使用数组可能是在这种情况下更好。
    • @RickBurgess:这种通信协议的设计无论如何都不是最优的......
    【解决方案3】:
    $vars = explode('|', $data);
    //echo $vars[0];
    //echo $vars[1];
    //$card_num = $vars[2];
    print_r($vars);
    

    【讨论】:

      【解决方案4】:

      只需使用explode()。它返回一个字符串数组,然后可以根据需要将其分配给您创建的变量,例如:

      // explode the data string separated by |
      $data_array = explode("|", $data);
      // assign variables
      $cc_no = $data_array[0];
      $cc_comp = $data_array[1];
      // and so on ...
      

      【讨论】:

        猜你喜欢
        • 2019-06-18
        • 1970-01-01
        • 1970-01-01
        • 2014-07-12
        • 2023-04-07
        • 2012-04-29
        • 2019-04-02
        • 2020-03-01
        • 1970-01-01
        相关资源
        最近更新 更多