如何在PHP中使用rtrim()函数从URL参数中移除指定内容?
问题分析与解决方案
哈哈,我之前也踩过rtrim()的坑!你遇到的问题核心是误解了rtrim的工作逻辑:
rtrim()函数的作用是从字符串末尾逐个移除指定的字符集合(不是完整的子字符串),直到遇到不在该集合里的字符为止。
你原本想移除的是training in india这个完整子串,但如果用rtrim($course_n, 'training in india'),函数会把t、r、a、i、n、g、空格、d这些字符都当成独立的可移除对象。当它删完末尾的training in india后,会继续往前检查——如果你的原字符串是sap bo training in india,删到sap bo时,空格在字符集合里会被删掉,要是你不小心把o也包含在了字符集合里(比如参数写错了),那最后一个o也会被删掉,就得到了sap b。
正确的解决方法(推荐几种)
1. 直接替换指定子串(最简单)
如果training in india是固定的后缀,用str_replace()直接替换掉这个子串就行:
$course_n = $_GET['search-result']; // 注意前面的空格,要和原字符串里的格式匹配 $course_name = str_replace(' training in india', '', $course_n);
2. 正则匹配末尾的后缀(更灵活)
如果存在大小写差异(比如Training In India)或者空格数量不固定的情况,用正则表达式的preg_replace()更靠谱:
$course_n = $_GET['search-result']; // $表示匹配字符串末尾,i表示不区分大小写,\s+匹配一个或多个空格 $course_name = preg_replace('/\s+training\s+in\s+india$/i', '', $course_n);
3. 分割字符串取前半部分
如果你的参数格式都是[课程名] training in india这种固定结构,也可以用explode()分割后取第一个元素:
$course_n = $_GET['search-result']; $parts = explode(' training in india', $course_n); $course_name = $parts[0];
内容的提问来源于stack exchange,提问作者omkara
相关产品推荐
相关产品推荐

