我已經發布到我們的網站解密的字符串:解析豎線分隔字符串
$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";
我需要這些數據,並從|
分開各部分創建變量。
我已經發布到我們的網站解密的字符串:解析豎線分隔字符串
$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";
我需要這些數據,並從|
分開各部分創建變量。
您正在尋找的功能是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
$vars = explode('|', $data);
//echo $vars[0];
//echo $vars[1];
//$card_num = $vars[2];
print_r($vars);
只需使用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 ...
感謝所有的回覆傢伙 – 2013-04-27 21:05:43
我最終用這個解決方案。 – 2013-04-27 21:06:14
,如果你想真正的命名:它返回一個字符串數組,這反過來又可以被分配給您根據您的需要創建變量,如變量(不只是值的數組),使用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使用列表 – Aleph 2013-04-27 20:16:38
我知道這可能是迂腐,但考慮到字符串似乎有地址信息,並且地址格式不同(第1行,第2行,等等)使用數組可能會更好在這種情況下。 – 2013-04-27 20:20:51
@RickBurgess:這種通信協議設計並不是最優的...... – 2013-04-27 20:28:51
我希望以上不包含真正的信用卡號碼! – rekire 2013-04-27 20:05:42
管道和變量並沒有太多關係。你的問題可以概括爲「如何在PHP中通過字符分割字符串?」並將其直接插入谷歌會得到你想要的。 – Ryan 2013-04-27 20:11:18
不,它不是真正的卡號。 – 2013-04-27 21:07:20