2014-02-22 34 views
0

我想製作一個bb標記,可以設置圖像大小和對齊方式。 贊:[img=width:hight|alignment]image[/img]preg_replace圖像大小bb標記

我目前有這個,但它只看到\ 4並忽略其餘。

$txt = preg_replace("#\[img=(.*?):(.*?)|(.*?)\](.+?)\[/img\]#is", "<a href=\"\\4\"><img src=\"\\4\" width=\"\\1 px\" height=\"\\2 px\" style=\"float: \\3 ; margin-right: 10px;\" /></a>", $txt); 

這是一個以上Lorem存有代碼:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pulvinar dapibus massa sed dapibus. Morbi cursus ipsum sit amet luctus facilisis. Donec sodales metus eu neque aliquam, aliquam eleifend felis hendrerit. Aliquam placerat, massa vel interdum ultrices, urna lectus posuere leo, in lacinia nibh felis venenatis neque. Vivamus vel volutpat sapien. Suspendisse potenti. Integer ac dapibus leo, at iaculis augue. Maecenas in orci consectetur arcu lacinia mattis nec et leo. 
[img=100:200|left]images/galaxy.jpg[/img] 
Donec ac tristique urna, eu tempus mauris. Sed id tellus varius, lobortis purus nec, volutpat massa. Ut venenatis sed nisi aliquet elementum. Donec rhoncus euismod erat sit amet vulputate. Suspendisse vitae orci sit amet orci pulvinar porttitor. Praesent viverra tortor id metus ornare, sit amet eleifend risus volutpat. Cras ac augue nec lorem pellentesque varius. Sed et nibh non justo hendrerit pretium. Aliquam egestas vitae arcu at ornare. Donec at fringilla leo. Nam condimentum lorem massa. Fusce non arcu pharetra, imperdiet justo at, molestie quam. 

,這給:

<a href="images/galaxy.jpg"><img src="images/galaxy.jpg" width=" px" height=" px" style="float: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pulvinar dapibus massa sed dapibus. Morbi cursus ipsum sit amet luctus facilisis. Donec sodales metus eu neque aliquam, aliquam eleifend felis hendrerit. Aliquam placerat, massa vel interdum ultrices, urna lectus posuere leo, in lacinia nibh felis venenatis neque. Vivamus vel volutpat sapien. Suspendisse potenti. Integer ac dapibus leo, at iaculis augue. Maecenas in orci consectetur arcu lacinia mattis nec et leo.<br /> 
[img=100:200|left ; margin-right: 10px;" /></a> 
Donec ac tristique urna, eu tempus mauris. Sed id tellus varius, lobortis purus nec, volutpat massa. Ut venenatis sed nisi aliquet elementum. Donec rhoncus euismod erat sit amet vulputate. Suspendisse vitae orci sit amet orci pulvinar porttitor. Praesent viverra tortor id metus ornare, sit amet eleifend risus volutpat. Cras ac augue nec lorem pellentesque varius. Sed et nibh non justo hendrerit pretium. Aliquam egestas vitae arcu at ornare. Donec at fringilla leo. Nam condimentum lorem massa. Fusce non arcu pharetra, imperdiet justo at, molestie quam. 

我在做什麼錯?

回答

1

你必須逃脫管道符|

$txt = preg_replace("#\[img=(.*?):(.*?)\|(.*?)\](.+?)\[/img\]#is", 
    '<a href="$4"><img src="$4" width="$1 px" height="$2 px" style="float:$3; margin-right: 10px;" /></a>', 
$txt); 

,還可以使用$n代替\n第二是保留給正則表達式,前者用於更換。

+0

很棒!你只是忘記把第二個'''換成'''。:P – Coolcrab

+0

@Coolcrab:不客氣,並且很好的引用:-) – Toto