Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Замена текста, перенос строки


Автор: nikki4 6.11.2015, 22:05
есть html страница. в ней встречаются картинки в абзацах. 
задача - такому абзацу присвоить класс.

в исходном коде там написано:
Код
<p>
  <img
</p>


пробовал типа того, но не работает:
Код
$text='<p>
  <img';
$fulltext='<p>
  <img ...... >текст</p>';
        
echo str_replace($text, '<p class="image"><img', $fulltext);  


пробовал и так:
Код
$text="<p>/n  <img";
$fulltext="<p>/n  <img ...... >текст на другой строке</p>";
        
echo str_replace($text, '<p class="image"><img', $fulltext);  


как присвоить такому абзацу класс?

Автор: samssrus 7.11.2015, 09:25
здесь не обойтись без регулярных выражений.
1. сначала нужно найти абзацы содержащие картинку  (т.н. совпадения с шаблоном):
пища для размышлений:
http://stackoverflow.com/questions/5209106/regular-expression-to-remove-p-tags-from-around-img-elements
http://stackoverflow.com/questions/4264678/regular-expression-to-match-html-p-tag-using-php

2. затем в каждом найденном совпадении просто заменить первый открывающий абзац тег: str_replace('<p>', '<p class="image">', $match);

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Zamena-teksta-perenos-stroki-id563cfa1cae20150f668b4567#findElement_E7045_563d995dae20150217f4d5d0_0

Автор: ksnk 7.11.2015, 12:04
Цитата(nikki4 @  6.11.2015,  22:05 Найти цитируемый пост)
пробовал типа того, но не работает:

http://ideone.com/Fd2Srp
Вероятно, дело в разных пробельных символах. Регуляркой, действительно, окажется проще.
http://ideone.com/fdGMF2

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)