2011-09-18 82 views
-1

我有以下代碼爆炸和str_replace函數

while (strpos($r, "[url]") !== FALSE){ 
    $link = explode("[url]", $r); 
    $final_link = explode("[/url]", $link[0]); 

    $thelink = $final_link[0]; 
} 
$r = str_replace("[url]","[url=$thelink]",$r); 

如果$r = [url]www.google.com[/url],我要變成[url=www.google.com]www.google.com[/url]

此代碼這似乎並沒有那樣做。我錯過了什麼嗎? 給我一個500錯誤!

感謝

+1

你能解釋一下你的代碼嗎? –

+0

字符串到達​​,例如問題中發佈的$ r = I。我需要把它變成我寫的東西。該代碼正試圖將其分解並以替代格式構建它。 – sark9012

+0

如果我正確理解你的代碼,當你爆炸時,你正在有效地清除[url],所以沒有什麼可以替換的。您是否打印了$鏈接以查看它的外觀? –

回答

1
preg_replace('~\[url\](.*?)\[/url\]~', '[url=$1]$1[/url]', $string); 
0

在這裏你去:

$r = '[url]www.google.com[/url]'; 
if (strpos($r, "[url]") !== FALSE){ 
    $link = explode("[url]", $r); 
    $final_link = explode("[/url]", $link[1]); 

    $thelink = $final_link[0]; 
    $r = str_replace("[url]","[url=$thelink]",$r); 
} 

var_dump($r); 

的變化是:改變了whileif因爲似乎沒有成爲它是一個while的理由。還將$link[0]更改爲$link[1]

0

儘管這並不直接回答你的(不太好!)的問題,我會建議使用正則表達式來代替:

$outputText = preg_replace('/\[url\](.*?)\[\/url\]/i', '[url=$1]$1[/url]', $inputText); 
0
$r = preg_replace('#\[url\](.*?)\[/url\]#', '[url=$1]$1[/url]', $r); 

試試這個正則表達式來代替。

+0

'(。*)?'應該是'(。*?)' – nickf

+0

@nick謝謝你的發現。我修好了它。 – FtDRbwLXw6

0
$r = "[url]www.google.com[/url]"; 
$sub="=".substr($r,5,-6); 
echo $url=substr_replace($r,$sub,4,0);