[英]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.