php - 删除“?” 仅在 str_replace 的特定子目录中
问题描述
下面的功能是替换 和
&
和?
字符,但?
我希望替换仅在子目录中有效example.com/forum/
public static function clean($sUrl)
{
return str_replace([' ', '&', '?'], ['%20', '&', ''], $sUrl);
}
例子:
https://example.com/forum/post/work/22/what-are-requirements-to-get-a-work-permit?/24
至
https://example.com/forum/post/work/22/what-are-requirements-to-get-a-work-permit/24
这是制作论坛网址的代码:
<a href="{{ $design->url('forum', 'forum', 'post', "$topic->name,$topic->forumId,$topic->title,$topic->topicId") }}">
解决方案
您需要使用preg_match()forum
匹配 URL 字符串以检查 URL 中是否存在子目录。稍后,您可以使用str_replace()从您的 URL中删除。?
<?php
function removeQuestionMarks($URL){
if(preg_match('/^http(s)?:\/\/example\.com\/forum\/.*$/',$URL) === 1){
$URL = trim($URL);
$URL = str_replace("?","",$URL);
}
return str_replace([' ', '&'],['%20', '&'],$URL);
}
echo removeQuestionMarks('https://example.com/forum/post/work/22/what-are-requirements-to-get-a-work-permit?/24'),PHP_EOL;
echo removeQuestionMarks('https://example.com/forum/ why? is it difficult?/877');
请注意,我没有使用urlencode()
它,因为它也会转换 URL 中的其他字符,这在您的情况下是不需要的。
推荐阅读
- ruby - Minitest 是否有类似于 RSpec 中的 allow_any_instance_of 的东西?
- javascript - 检查函数是否在jQuery中返回false
- javascript - 消除 ?和 = 在 javascript 输出字符串中
- reactjs - 无法从 react-router 链接访问 this.props.location
- r - 如何根据 selectInput() 有条件地更改 Shiny wellPanel() 背景颜色?
- excel - 如何将 5 行与 Excel 中另一张工作表中的一行匹配?
- python - 将字典元素打印为路径列表
- php - Stripe,无需试用日即可订阅
- php - WooCommerce 中运输方式标签前的图标
- r - 在R中将列转换为日期