preg replace — PHP begin & lt; p & gt; элемент только из текста

В настоящее время работаю статья в фейсбуке для моего сайта, но изображения не отображаются, потому что <figure> элемент, представляющий изображение, должен быть включен автономно в текст статьи, а не заключен в <p> элемент.

$message="[img]http://img.loadedcamp.net/hfjfjd.jpg[/img]

This is the news and it is here.

[img]http://img.loadedcamp.net/YTgxbj.jpg[/img]

The new is posted by an author";

Это функция nl2p ()

function nl2p($string, $only_if_no_html = FALSE) {
$replace = TRUE;
if ($only_if_no_html) {
$str2 = strip_tags($string);
if ($str2 != $string) {
$replace = FALSE;
}
}
if ($replace) {
return
'<p>'
.preg_replace('#(<br\s*?/?>\s*?){2,}#', '</p>'."\n".'<p>', nl2br($string))
.'</p>';
}
}

Это изображение bbcode changer;

function savedimg($string) {
$string = preg_replace("#\[img\](.*?)\[/img\]#is", '<figure> <img src="$1"/> </figure>', $string);
return $string;
}

echo nl2p(savedimg($message)); вывел это;

<p><figure> <img src="http://img.loadedcamp.net/hfjfjd.jpg" /> </figure></p>
<p>This is the news and it is here.</p>
<p><figure> <img src="http://img.loadedcamp.net/YTgxbj.jpg" /> </figure></p>
<p>The new is posted by an author</p>

Я хочу p элемент не должен быть между изображениями. Пожалуйста, помогите, ребята!

Это то, что я ожидал в качестве вывода;

<figure> <img src="http://img.loadedcamp.net/hfjfjd.jpg" /> </figure>
<p>This is the news and it is here.</p>
<figure> <img src="http://img.loadedcamp.net/YTgxbj.jpg" /> </figure>
<p>The new is posted by an author</p>

0

Решение

Измените шаблон регулярных выражений в своем savedimg функция к следующему:

...
$string = preg_replace("#(<p>\s*?)?\[img\](.*?)\[/img\](\s*?</p>)?#is", '<figure> <img src="$2"/> </figure>', $string );
...
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]