簡體   English   中英

數組和子字符串php

[英]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這樣的函數

這個問題可能是以下Php在標簽主題之間獲取字符串的重復

這是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM