Используйте Reg Expression для переформатирования изображения в ленте RSS - PullRequest
1 голос
/ 16 сентября 2010

Я создаю несколько RSS-каналов с использованием PHP (5.2) из ​​базы данных MySQL специально для приложения для iPhone, которое я делаю через AppMakr.

Они взяты из статей на веб-сайте, которые содержат встроенные в них изображения,однако в каналах они не выглядят великолепно.То, что я хочу попробовать, - это когда изображение окружает его в <p>, поэтому оно находится на отдельной строке и не пытается обтекать текст статьи.

Формат изображения похож наэто:

 <a rel="lightbox" href="http://images.domain.comk/543/image1.jpg"><img class="imageright" src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></a>

Так что в основном окружено <a href> и классом "imageright" или "imageleft".

Я бы хотел изменить это на:

 <p><img src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></p>

По существу, удаляя класс href и imagexxxx и окружающие их теги p.

Я думаю, что preg_replace, вероятно, придется использовать, но в ущерб тому, что я фактически использовал бы для него.Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

Таким образом, вам нужно будет использовать регулярное выражение для сопоставления, например:

<a(.*)><img(.*)class="imageright" (.*)></a>

А затем заменить регулярное выражение следующим образом:

<p><img$2$3></p>

Это не самый гибкийно это должно сработать для preg_replace ()

0 голосов
/ 16 сентября 2010

Это регулярное выражение соответствует открывающей и закрывающей паре определенного тега HTML. Все, что находится между тегами, сохраняется в первой группе захвата.

'<%TAG%[^>]*>(.*?)</%TAG%>'

Это дает нам отправную точку. Теперь нам нужно заменить <a href></a> на <p></p>

PHP предоставляет простой способ сделать это в preg_replace ()

preg_replace ($pattern, $replacement, $text);

Теперь просто введите правильные значения:

$patterns = '<%a%[^>]*>(.*?)</%a%>';
$replacement = '<%p%[^>]*>(.*?)</%p%>';
$text = ' <a rel="lightbox" href="http://images.domain.comk/543/image1.jpg"><img class="imageright" src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></a>';

echo preg_replace ($pattern, $replacement, $text);

Это не проверенный пример, и он предназначен для использования в качестве шаблона. Вы должны прочитать http://www.php.net/manual/en/function.preg-replace.php перед созданием решения.

...