我的php很弱,我正在尝试更改此字符串:
http://www.example.com/backend.php?/c=crud&m=index&t=care
^
是:
http://www.example.com/backend.php?c=crud&m=index&t=care
^
删除/
后的backend.php?
。有关最佳方法的任何想法吗?
谢谢!
答案 0 :(得分:107)
我认为最好只使用str_replace,就像手册中说的那样:
如果你不需要花哨的替换 规则(如正则表达式),你 应始终使用此功能 而不是ereg_replace()或 的preg_replace()。
<?
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care";
$goodUrl = str_replace('?/', '?', $badUrl);
答案 1 :(得分:8)
$str = preg_replace('/\?\//', '?', $str);
编辑:请参阅CMS的回答。已经很晚了,我应该知道的更好。
答案 2 :(得分:0)
虽然regexp适合这里很好,但我会给你一个替代方法。它可能比同等的正则表达式快一点,但生活都是关于选择(......或其他)。
$length = strlen($urlString);
for ($i=0; $i<$length; i++) {
if ($urlString[$i] === '?') {
$urlString[$i+1] = '';
break;
}
}
很奇怪,我知道。
答案 3 :(得分:0)
$splitPos = strpos($url, "?/");
if ($splitPos !== false) {
$url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2);
}