数组和子串php

时间:2018-01-08 16:19:47

标签: php mysql arrays substring

     //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()

4 个答案:

答案 0 :(得分:1)

考虑到用户信息始终以~$USER=开头,以~结尾,我们可以使用简单的正则表达式获取结果:

preg_match('/\~\$USER=(?<user>[^~]+)/', $pay_payment_info, $match);
var_dump($match['user']);

答案 1 :(得分:0)

错误告诉您确切错误的原因:substring_index不是有效的/本机PHP函数...但您可以定义自己的substring_index函数。

但是,给定字符串:

  

$ TAG = 6F0000173〜$ USER =詹姆斯〜$ TAGROLE = 0

要获取 $ USER = james 部分,您可以使用explode,如下所示 -

$payNo = explode("~", $result["pay_payment_info"])

现在,$USER

中有$payNo[1]个信息

如果你想更进一步,只是获得$USER值的值,那么你可以使用PHP的原生substr函数:

$justUserPart = substr($payNo[1], strpos($payNo[1], "=")+1);
echo $justUserPart;

请注意:以上假设您将始终拥有格式为

的字符串
  

$ TAG = <强> ... 〜$ USER = <强> ... 〜$ TAGROLE = <强> ...

答案 2 :(得分:0)

正如之前的评论所说 - 核心PHP中没有像substring_index这样的函数

此问题可能与以下Php get string between tags重复 主题

以下是使用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"

答案 3 :(得分:0)

似乎问题是你没有substring_index()函数或方法,但是你试图调用它两次。

我不确定为什么你使用~作为分隔符,但这应该没问题,尽管使用,会导致工作量减少;您的查询字符串的每个属性都可以直接解决。

您要做的是使用php split()explode() $aUserInfo = explode('~', $result['pay_payment_info']); 这里是link to the manual

您要做的是拆分inc字符串:

$result = array();
foreach($aUserInfo as $v){
  $aTmp = explode('=',$v);
  $result[$aTmp[0]] = $aTmp[1];
}

现在你有了一个数组。循环遍历并按照您的意愿制作:

$result = array( 'tag' => '6F0000173',
                 'user'=> 'James',
                 'tagrole'=> 0    );

在这结尾处你有一个数组,其中键作为键,它们各自的值作为值,即

n