我正在尝试删除include
和下一个&
之间的文本:
filter[mat]=1&filter[status]=available&include=homeCompetitor,awayCompetitor&sort=scheduled
并得到类似这样的文本:
filter[mat]=1&filter[status]=available&sort=scheduled
我尝试使用以下代码:
function delete_all_between($string)
{
$beginningPos = strpos($string, $beginning);
$endPos = strpos($string, $end);
if ($beginningPos === false || $endPos === false)
return $string;
}
以及:
preg_replace("/\include[^]+\&/","",$string);
但是没有一个。
该文本也可能具有以下格式:
filter[mat]=1&filter[status]=available&sort=scheduled&include=homeCompetitor,awayCompetitor
我需要从“包含”一词中删除它(在这种情况下,没有&
)
编辑: 这个问题不会重复,因为该答案对我不起作用!
答案 0 :(得分:2)
您要处理的字符串具有特定的格式,可以由parse_str进行解析,并可以通过http_build_query重新组合。
<?php
$str = "filter[mat]=1&filter[status]=available&include=homeCompetitor,awayCompetitor&sort=scheduled";
parse_str($str, $output);
unset($output["include"]);
echo http_build_query($output);
答案 1 :(得分:-2)
尝试一下:
preg_replace('/(include(.*)\&)|(\&include([^&]*)$)/i', '', $string)
我通过:
进行了测试filter[mat]=1&filter[status]=available&include=homeCompetitor,awayCompetitor&sort=scheduled
结果: filter[mat]=1&filter[status]=available&sort=scheduled
filter[mat]=1&filter[status]=available&include=homeCompetitor,awayCompetitor
结果: filter[mat]=1&filter[status]=available
filter[mat]=1&filter[status]=available&INCLUDE=homeCompetitor,awayCompetitor&sort=scheduled
结果: filter[mat]=1&filter[status]=available&sort=scheduled