2012-06-21 6 views
1

У меня есть регулярные выражения в PHP PHP preg_replace для JavaScript | BB-кода

$s = preg_replace("#\[URL\=(.*)\](.*)\[\/URL\]#Ui", "<a href=\"$1\" target=\"_blank\">$2</a>", $s); 
$s = preg_replace("#\[CODE\=(.*)\](.*)\[\/CODE\]#Uis", "<pre class=\"brush: $1\">$2</pre>", $s); 
$s = preg_replace("#\[URL\](.*)\[\/URL\]#Ui", "<a href=\"$1\" target=\"_blank\">$1</a>", $s); 
$s = preg_replace("#\[IMG\](.*)\[\/IMG\]#Ui", "<p align='center'><img src=\"$1\" border=\"0\" /></p>", $s); 

Как я могу преобразовать тот JavaScript?

Я попытался для этой комбинации, но это не работает (?)

body.replace(/\[URL\=(.*)\](.*)\[\/URL\]/g, '<a href=\"$1\" target=\"_blank\">$2</a>'); 

@Kolink Это работает для одного изображения

body = body.replace(/\[IMG\]([\d\D]*)\[\/IMG\]/gi, '<p align="center"><img src="$1" border="0" /></p>'); 

, но если добавить второе изображение все это происходит сбой becauase в этом примере

[IMG]http://www.someimage.com/123.jpg[/IMG]Test 
[IMG]http://www.someimage.com/456.jpg[/IMG] 

матча будет

http://www.someimage.com/123.jpg[/IMG]Test[IMG]http://www.someimage.com/456.jpg 
+0

Что такое 'body' - строка или объект DOM? – raina77ow

+0

Это строка. – svenkapudija

ответ

2

Вам нужно добавить i после g сделать регулярное выражение не чувствителен к регистру.

Кроме того, JavaScript не поддерживает «многострочный» модификатор. Вместо этого вам нужно будет заменить . чем-то вроде [\d\D].

+0

'/ s' на самом деле называется однострочным модификатором.) – raina77ow

+0

Я отредактировал сообщение. Он не работает с несколькими кодами:/EDIT: Я получил его, если я НЕ ЗАМЕНЯЮ. (точки) он работает. – svenkapudija

+0

Добавьте '?' После '*'. Это позволит обрабатывать одно изображение за раз. –