2013-03-05 32 views

回答

2

你必須使用正則表達式來做到這一點

$line = preg_replace('~\\[a +href=\'([^\']+)\'\\]([^\\[]+)\\[/a\\]~', '<a href="$1">$2</a>', $line); 
+2

「你必須使用正則表達式」不,你不需要。 – 2013-03-05 13:23:13

+0

如果他只是想做到這一點,這是最快的方式 - 當然,你可以有不同的東西 – Philipp 2013-03-05 13:24:16

+0

嗯......一旦你得到嵌套標籤,你很可能會想要。當然,這不是你真的需要......你也可以編寫一個編譯器。 – Mchl 2013-03-05 13:24:22

7

爲什麼不直接使用:

$search = array('[', ']'); 
$replace = array('<', '>'); 

$line = str_replace($search, $replace, $line); 
+0

將工作簡單案件。一旦你在'url'或'link'中獲得'[]',它就會失敗(通過替換太多) – Mchl 2013-03-05 13:26:27

+0

你是對的,但是OP要求一個特定的用例。如果他真的只需要這樣做,這種方法可能比正則表達式更容易閱讀。 – acme 2013-03-05 13:31:43

+0

當然。你的回答實際上是正確的,僅限於簡單的情況(對於OP需要這可能是足夠的)。 – Mchl 2013-03-05 13:33:11

1

只需使用

$string = str_replace(array('[', ']'), array('<', '>'), $string); 
0

試試這個:

$str = "[a href='url']link[/a]"; 
$new_str = preg_replace('/\[a href=\'(.*)\'\](.*)\[\/a\]/','<a href=\'$1\'>$2</a>',$str); 
echo $new_str;