PHP删除字符串中的字符

PHP删除字符串中的字符,php,string,Php,String,我的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?之后删除/。

我的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?
之后删除
/
。有什么好办法吗

谢谢

$str = preg_replace('/\?\//', '?', $str);

编辑:参见CMS的答案。时间不早了,我应该知道得更清楚。

虽然regexp在这里很合适,但我将为您提供另一种方法。它可能比等效的regexp快一点,但生活就是选择(…或其他东西)

$length=strlen($urlString);

对于($i=0;$i我认为最好简单使用,就像手册上说的:

如果你不需要花哨的更换 规则(如正则表达式),您可以 应始终使用此功能 而不是ereg_replace()或 preg_replace()


Er,如果$urlString[$i+1]不可用怎么办:问题没有出现这种情况,所以我的解决方案也没有考虑到。MDCore:请详细说明,为什么会这样?我遇到了一个有用的问题。如果您的字符串的大小为megs(可能会发生),运行preg_replace或str_replace将有可能达到php.ini的内存限制。php中的pcre_replace代码在执行任何操作之前都会将字符串大小缩小2倍,因此这可能是一个问题。根据我之前的评论,如果字符串非常大,可以使用strpos技巧来找到正确的片段,preg_匹配它们,然后使用ab用括号表示法删除不需要的字符。使用时要小心,因为它不快,但会节省内存。实际上,您应该将CMS的答案标记为正确答案。str_replace比regex快得多。@Pestilence,这就是我推荐CMS答案的原因。
$length = strlen($urlString);
for ($i=0; $i<$length; i++) {
  if ($urlString[$i] === '?') {
    $urlString[$i+1] = '';
    break;
  }
}
<?
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care";
$goodUrl = str_replace('?/', '?', $badUrl);
$splitPos = strpos($url, "?/");
if ($splitPos !== false) {
    $url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2);
}