Php 爆炸和stru_替换

Php 爆炸和stru_替换,php,Php,我有以下代码 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],我需要将其转换为[u

我有以下代码

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错误

谢谢

给你:

$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);

更改为:将
while
更改为
if
,因为似乎没有理由将其更改为
while
。还将
$link[0]
更改为
$link[1]

虽然这并不能直接回答您的问题(不是很好!),但我建议改用正则表达式:

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

试试这个正则表达式。

一个字符串出现,比如问题中的$r=I。我需要把它变成我写的东西。代码试图将其分解并以其他格式构建。如果我正确理解了您的代码,当您分解时,您实际上是在剥离[url],因此没有什么可替换的内容。您是否打印了$thelink以查看其外观?您可能希望将最后一行移到while内部,否则它将是一个无限循环,因为$r从未被修改过。@nick感谢您发现了这一点。我修好了。
$r = "[url]www.google.com[/url]";
$sub="=".substr($r,5,-6);
echo $url=substr_replace($r,$sub,4,0);
$r = preg_replace('#\[url\](.*?)\[/url\]#', '[url=$1]$1[/url]', $r);
$r = "[url]www.google.com[/url]";
$sub="=".substr($r,5,-6);
echo $url=substr_replace($r,$sub,4,0);