2013-04-27 146 views
-1

我已經發布到我們的網站解密的字符串:解析豎線分隔字符串

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

我需要這些數據,並從|分開各部分創建變量。

+3

我希望以上不包含真正的信用卡號碼! – rekire 2013-04-27 20:05:42

+1

管道和變量並沒有太多關係。你的問題可以概括爲「如何在PHP中通過字符分割字符串?」並將其直接插入谷歌會得到你想要的。 – Ryan 2013-04-27 20:11:18

+0

不,它不是真正的卡號。 – 2013-04-27 21:07:20

回答

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
$vars = explode('|', $data); 
//echo $vars[0]; 
//echo $vars[1]; 
//$card_num = $vars[2]; 
print_r($vars); 
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 ... 
+0

感謝所有的回覆傢伙 – 2013-04-27 21:05:43

+0

我最終用這個解決方案。 – 2013-04-27 21:06:14

3

,如果你想真正的命名:它返回一個字符串數組,這反過來又可以被分配給您根據您的需要創建變量,如變量(不只是值的數組),使用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,如其他答案中的建議。

+3

+1使用列表 – Aleph 2013-04-27 20:16:38

+0

我知道這可能是迂腐,但考慮到字符串似乎有地址信息,並且地址格式不同(第1行,第2行,等等)使用數組可能會更好在這種情況下。 – 2013-04-27 20:20:51

+0

@RickBurgess:這種通信協議設計並不是最優的...... – 2013-04-27 20:28:51