爆炸和str_replace

时间:2011-09-18 13:43:33

标签: 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],我需要将其转换为[url=www.google.com]www.google.com[/url]

此代码似乎没有这样做。我错过了什么吗? 给我一个500错误!

由于

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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);

更改是:将while更改为if,因为它似乎不是while的原因。同时将$link[0]更改为$link[1]

答案 2 :(得分:0)

虽然这不能直接回答你(不太好!)的问题,但我建议使用正则表达式:

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

答案 3 :(得分:0)

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

请尝试使用正则表达式。

答案 4 :(得分:0)

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