PHP在字符串中删除字符

问题描述:

我的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?后取出/。任何想法最好的方式来做到这一点?

谢谢!

+0

你应该真正标志着CMS”答案正确的。 – eyelidlessness 2008-11-05 06:50:00

我认为这是最好使用简单str_replace,如手动说:

如果您不需要花哨的更换 的规则(比如正则表达式)这样做,你 应该始终使用此功能 代替ereg_replace()或 preg_replace()。

<? 
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care"; 
$goodUrl = str_replace('?/', '?', $badUrl); 

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

编辑:请参阅CMS的答案。这很晚了,我应该知道更好。

+0

谢谢,那很完美。 – 2008-11-05 06:48:01

+2

str_replace比正则表达式要快得多。 – pestilence669 2011-10-01 22:01:49

+1

@Pestilence,这就是为什么我推荐CMS的答案。 – eyelidlessness 2011-10-02 18:21:26

虽然正则表达式适合在这里很好,我会给你一个替代方法。它可能可能比等效的正则表达式更快一点,但生活的全部关于选择(...或某物)。

$length = strlen($urlString); 
for ($i=0; $i<$length; i++) { 
    if ($urlString[$i] === '?') { 
    $urlString[$i+1] = ''; 
    break; 
    } 
} 

奇怪,我知道。

$splitPos = strpos($url, "?/"); 
if ($splitPos !== false) { 
    $url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2); 
}