解析管道分离的字符串

时间:2013-04-27 20:03:34

标签: php arrays string

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

$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";

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

4 个答案:

答案 0 :(得分:5)

您正在寻找的功能是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

答案 1 :(得分:3)

如果你知道字符串a-priori的结构,如果你想要真正的命名变量(不只是一个值数组),使用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

答案 2 :(得分:1)

$vars = explode('|', $data);
//echo $vars[0];
//echo $vars[1];
//$card_num = $vars[2];
print_r($vars);

答案 3 :(得分:1)

只需使用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 ...