[英]Array and substring php
//array data
{
$results[] = $result;
$SiteID=$result["site_id"];
$pay_sale_id=$result["pay_sale_id"];
$pay_payment_info=$result["pay_payment_info"];
$payNo= substring_index(substring_index('$result["pay_payment_info"]', '$USER=', -1), '~$TAGROLE', 1);
}
pay_payment_info的內容如下
#$TAG=6F0000173~$USER=james~$TAGROLE=0
我只想提取用戶信息,但出現錯誤:
致命錯誤:調用未定義函數substring_index()
考慮到用戶的信息總是開頭~$USER=
和一個結束~
我們可以使用簡單的regex得到的結果:
preg_match('/\~\$USER=(?<user>[^~]+)/', $pay_payment_info, $match);
var_dump($match['user']);
該錯誤告訴您確切的原因: substring_index
不是有效/本機的PHP函數...不過,您可以定義自己的substring_index
函數。
但是,給定字符串:
$ TAG = 6F0000173〜$ USER =詹姆斯〜$ TAGROLE = 0
要獲得$ USER = james部分,可以使用explode
,如下所示:
$payNo = explode("~", $result["pay_payment_info"])
現在,您在$payNo[1]
有$USER
信息。
如果您想走得更遠並且只獲得$USER
值的值,則可以使用PHP的本機substr
函數:
$justUserPart = substr($payNo[1], strpos($payNo[1], "=")+1);
echo $justUserPart;
請注意 :以上假設您將始終使用以下格式的字符串
$ TAG = ... 〜$ USER = ... 〜$ TAGROLE = ...
如之前的評論所述-核心PHP中沒有像substring_index
這樣的函數
這是使用strpos
http://php.net/manual/pl/function.strpos.php的工作示例
和substr
http://php.net/manual/pl/function.substr.php
$var = '$TAG=6F0000173~$USER=james~$TAGROLE=0';
$m = substr($var, strpos($var, '~$USER=')+7);
var_dump($m); //returns string(16) "james~$TAGROLE=0"
$m = substr($m, 0, strpos($m, '~$'));
var_dump($m); //returns string(5) "james"
似乎問題是您沒有substring_index()
函數或方法,但嘗試將其調用兩次。
我不知道為什么你使用~
作為分隔符,但應該是好的,但使用,
將導致更少的工作; 這樣,您就可以直接解決查詢字符串的每個屬性。
您想要做的是使用split()
的php
版本,即explode()
這是手冊的鏈接 。
您要做的是分割inc字符串:
$aUserInfo = explode('~', $result['pay_payment_info']);
現在您有了一個數組。 遍歷它,並使其如您所願:
$result = array();
foreach($aUserInfo as $v){
$aTmp = explode('=',$v);
$result[$aTmp[0]] = $aTmp[1];
}
最后,您將得到一個數組,其中包含鍵作為鍵,其各自的值作為值,即
$result = array( 'tag' => '6F0000173',
'user'=> 'James',
'tagrole'=> 0 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.