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