2008-11-05 133 views
29

我的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

回答

95

我認爲這是最好使用簡單str_replace,如手動說:

如果您不需要花哨的更換 的規則(比如正則表達式)這樣做,你 應該始終使用此功能 代替ereg_replace()或 preg_replace()。

<? 
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care"; 
$goodUrl = str_replace('?/', '?', $badUrl); 
8
$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

0

雖然正則表達式適合在這裏很好,我會給你一個替代方法。它可能可能比等效的正則表達式更快一點,但生活的全部關於選擇(...或某物)。

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

奇怪,我知道。

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