首页 > 解决方案 > 删除两个字符串之间的文本

问题描述

我正在尝试删除文本中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

我需要从包含这个词中删除到最后(在这种情况下没有&

编辑:这个问题没有重复,因为那个答案对我不起作用!

标签: phpregex

解决方案


您正在处理的字符串采用特定格式,可以由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);

推荐阅读