从动态生成的字符串中删除最后一个字符

时间:2018-03-01 17:21:31

标签: php

我试图删除字符串中的最后一个字符。我已经看到很多例子可以做到这一点,但所有方法都删除了我的所有'&'但我只想要我的最后一个角色'&'被删除。

我的字符串是:

  

https://website.biz/get/#TYPE#? PARTNER_ID = XXXXXXXX&安培; api_password = XXXXXXXX&安培; mobile_no =#NUMBER#&安培; operator_code =#OPERATORID#&安培;量=#AMOUNT#&安培; partner_request_id =#ORDERID#&安培;圆= 10安培; recharge_type = NORMAL&安培;

完整的API是动态的。我想删除最后一个字符串'&'从这个字符串。上面的代码来自我的PHP代码:

<td><?php $parameter = fetchAPIparameter($v6['api_id'],$v6['operator_type']);
    foreach ($parameter as $v7) {
       $pks = ($v7['parameter'].'='.$v7['result'].'&'); echo ($pks);
    } ?></td>

我使用了substr($pks,0,-1)substr_replace($pks,"",-1)以及rtrimmb_substr,但所有人都删除了完整的'&amp;'来自我的API。你能帮我解决一下我的错误吗?

3 个答案:

答案 0 :(得分:1)

您需要在变量中构建一个字符串,然后删除最后一个字符 你这样做的方法是删除每次迭代的最后一个字符,这不是你想要的。

<td><?php 
$parameter = fetchAPIparameter($v6['api_id'],$v6['operator_type']);
$pks = "";
foreach ($parameter as $v7) {
   $pks .= ($v7['parameter'].'='.$v7['result'].'&');  //here i am getting error
} 
echo substr($pks,0,-1);
?></td>

.=表示它会追加到字符串中 substr将回显除最后一个角色以外的所有角色。

答案 1 :(得分:0)

虽然如果以正确的方式应用substr,它应该有效,但在您的情况下,最好阻止添加最后一个&。为此,您可以使用implode

$parameter = fetchAPIparameter($v6['api_id'],$v6['operator_type']);
$pks=[];
foreach ($parameter as $v7) {
   $pks[] = $v7['parameter'].'='.$v7['result']; 
}
$pks = "https://website.biz/get/#TYPE#?" . implode("&", $pks);
echo $pks;

答案 2 :(得分:0)

你可以这样试试并使用http_build_query

$result = [];
foreach ($parameter as $v7) {
    $result[$v7['parameter']] = $v7['result'];
}

$pks = "https://website.biz/get/#TYPE#?" .  http_build_query($result);

这将使用&#39;参数&#39;来构建数组$result。作为关键和结果&#39;作为价值。然后http_build_query将生成一个URL编码的查询字符串。