Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修剪包含变量的PHP字符串_Php_String_Trim - Fatal编程技术网

修剪包含变量的PHP字符串

修剪包含变量的PHP字符串,php,string,trim,Php,String,Trim,我再次就我遇到的一个小问题寻求您的帮助,解决方案可能是显而易见的/看着我的脸,但我还没有解决我的问题 我需要修剪一个字符串,这个字符串中碰巧有一个变量。(字符串实际上是一个URL) 示例字符串/URL: /portal/index.php?module=SerialDB&page=listing&returnmsg=3 &returnmsg=3可以是从0到100的数字范围,在某些情况下还可以是文本。这是我需要修剪的变量,因为我希望将字符串/URL的其余部分存储到数据库中。以下是

我再次就我遇到的一个小问题寻求您的帮助,解决方案可能是显而易见的/看着我的脸,但我还没有解决我的问题

我需要修剪一个字符串,这个字符串中碰巧有一个变量。(字符串实际上是一个URL)

示例字符串/URL:

/portal/index.php?module=SerialDB&page=listing&returnmsg=3
&returnmsg=3可以是从0到100的数字范围,在某些情况下还可以是文本。这是我需要修剪的变量,因为我希望将字符串/URL的其余部分存储到数据库中。以下是我寻求的结果

/portal/index.php?module=SerialDB&page=listing
我尝试了下面的代码,只是想看看它是否适合我所需要的函数,但不幸的是,它更具体,除非得到精确匹配,否则不会修剪

$str = "/portal/index.php?module=SerialDB&returnmsg=3";
echo $str . "<br>"; // Test to see full string
echo chop($str,"&returnmsg="); // Attempt to trim the string
$str=“/portal/index.php?module=SerialDB&returnmsg=3”;
echo$str。“
”;//测试以查看完整字符串 回音印章($str,&returnmsg=“);//尝试修剪字符串
如果有人能胜任协助的任务,我将不胜感激。和我所有的问题一样,我也想了解正在发生的事情,而不是仅仅被交给代码,这样我就可以自信地在未来使用它


再次感谢各位:)

一个不依赖于参数顺序的快速方法就是将各个部分拆开,挑选出您想要的,然后将它们重新组合在一起(您可以查看各种PHP函数以了解更多详细信息):


一种不依赖于参数顺序的快速方法是将各个部分分开,挑选出您想要的,然后将它们重新组合在一起(您可以查看各种PHP函数以了解更多详细信息):


如果
returnmsg
始终是url中的最后一个参数(而不是第一个),并且如果url不包含锚点,那么简言之,该参数始终位于末尾,您可以通过简单的
分解来解决问题:

$url = explode('&returnmsg=', $url)[0];
(使用
&returnmsg=
拆分字符串,保留第一部分)

否则,按照注释中的建议,您可以使用正则表达式替换:

$url = preg_replace('~[?&]returnmsg=[^&#]*~', '', $url);
图案详情:

~            # pattern delimiter
[?&]         # a literal "?" or a literal "&"
returnmsg=
[^&#]*       # any characters except "&" or "#" zero or more times
~

(对于这两种方式,如果参数不存在,url保持不变。)

如果
returnmsg
始终是url中的最后一个参数(而不是第一个),并且如果url不包含锚定,那么简言之,参数始终位于末尾,您可以通过简单的
分解
来解决问题:

$url = explode('&returnmsg=', $url)[0];
(使用
&returnmsg=
拆分字符串,保留第一部分)

否则,按照注释中的建议,您可以使用正则表达式替换:

$url = preg_replace('~[?&]returnmsg=[^&#]*~', '', $url);
图案详情:

~            # pattern delimiter
[?&]         # a literal "?" or a literal "&"
returnmsg=
[^&#]*       # any characters except "&" or "#" zero or more times
~

(对于这两种方式,如果参数不存在,url保持不变。)

我不知道它是开始还是结束,因此如果它是结束,请使用下面的代码

<?php
    $url="/portal/index.php?module=SerialDB&page=listing&returnmsg=3";
    $array= explode("&",$url);
    $new_url="";
    foreach($array as $p){
    if(strpos($p,"returnmsg")===false){
    $new_url .=$p."&";
    }
    }
    echo rtrim($new_url, "&");

我不知道它是开始还是结束,所以如果它是结束,请使用下面的代码

<?php
    $url="/portal/index.php?module=SerialDB&page=listing&returnmsg=3";
    $array= explode("&",$url);
    $new_url="";
    foreach($array as $p){
    if(strpos($p,"returnmsg")===false){
    $new_url .=$p."&";
    }
    }
    echo rtrim($new_url, "&");

简单。这个概念被称为
切片

$url = "/portal/index.php?module=SerialDB&page=listing&returnmsg=3";

$new_url = substr( $url, 0, strrpos( $url, '&') );
结果是:
/portal/index.php?module=SerialDB&page=listing

substr()
函数返回字符串的一部分。它需要三个参数。参数#1是要从中提取的字符串,参数#2是要从何处开始,参数#3是片段的长度或要提取的字符数

strrpos()
函数返回字符串中最后一次出现的子字符串的位置/索引。示例:如果您有字符串“zazz”,则将返回最后一个z的位置。您可以将其视为“字符串反向位置”。此函数接受三个参数。我将只介绍两个,因为这是我在本例中使用的数字。参数#1是您正在搜索的字符串,参数#2是指针或您正在查找的内容,在您的示例中是
&
。正如我在本段开头提到的,它以整数的形式返回位置。就你而言,这个数字是46

因此
strrpos()
作为
substr()
中的第三个参数告诉它在哪里切片字符串。完成后,它返回要提取的段

如果您阅读PHP手册并查看将来可能对您有所帮助的可用函数,这将非常有用。您可以通过各种方式组合这些功能来解决问题


简单。这个概念被称为
切片

$url = "/portal/index.php?module=SerialDB&page=listing&returnmsg=3";

$new_url = substr( $url, 0, strrpos( $url, '&') );
结果是:
/portal/index.php?module=SerialDB&page=listing

substr()
函数返回字符串的一部分。它需要三个参数。参数#1是要从中提取的字符串,参数#2是要从何处开始,参数#3是片段的长度或要提取的字符数

strrpos()
函数返回字符串中最后一次出现的子字符串的位置/索引。示例:如果您有字符串“zazz”,则将返回最后一个z的位置。您可以将其视为“字符串反向位置”。此函数接受三个参数。我将只介绍两个,因为这是我在本例中使用的数字。参数#1是您正在搜索的字符串,参数#2是指针或您正在查找的内容,在您的示例中是
&
。正如我在本段开头提到的,它以整数的形式返回位置。就你而言,这个数字是46

因此
strrpos()
作为
substr()
中的第三个参数告诉它在哪里切片字符串。完成后,它返回要提取的段

如果您阅读PHP手册并查看将来可能对您有所帮助的可用函数,这将非常有用。您可以通过各种方式组合这些功能来解决问题


preg_replace(&returnmsg=*)为空此参数是否总是最后一个(出现时)?你的url是否包含锚