Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.11.2016, 18:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

$subject = "<div>Lorem ipsum.</div>
<div>Lorem</div> ipsum.
Lorem ipsum.
<li>Lorem ipsum.</li>
<div><span>Lorem ipsum.</span></div>";
$pattern = "/(*ANYCRLF)^<div>.*(?<!<\/div>)$|^(?!<div>).+$/imu";
$replacement = "<p>$0</p>";
echo preg_replace( $pattern , $replacement , $subject );

Но вообще регулярками с html работать - моветон.
__________________
29375, 35

Последний раз редактировалось Aetae, 01.11.2016 в 18:54.
Ответить с цитированием
  #12 (permalink)  
Старый 01.11.2016, 19:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Aetae,

это не соответствует требуемому, а если строки будут иметь переносы (что неизвестно из условия), тем более не будет работать.
Ответить с цитированием
  #13 (permalink)  
Старый 01.11.2016, 19:07
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

laimas, соответствует последнему комменту. Впрочем если строки должны содержать переносы - модификация минимальна:
в $subject подаётся массив нужных строк и в регулярке меняется модификатор m на s.
__________________
29375, 35
Ответить с цитированием
  #14 (permalink)  
Старый 01.11.2016, 19:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Aetae
соответствует последнему комменту
Виноват, я сам запутался уже.

Сообщение от Aetae
в $subject подаётся массив нужных строк и в регулярке меняется модификатор m на s
Вопрос в том строк чего, как понять что есть законченная строка? Если по переносу, то зачем модификатор s? И к тому же открывающий тег может быть в строке N, а закрывающий в Nk. Простая замена модификатора не поможет.

Учитывая, что латиница en в utf также представлена одним байтом, а ищем именно латиницу (любой символ вне тега не важен), модификатора u не требуется, замена "Lorem ipsum" на "Русский текст" без этого модификатора никак не скажется на результате.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить регулярное выражение для числа с плавающей точкой boomrest Общие вопросы Javascript 4 25.02.2015 11:17
Помогите составить регулярное выражение yura29 Общие вопросы Javascript 3 08.06.2014 00:35
Помогите, пожалуйста, составить регулярное выражение sbudyakov Общие вопросы Javascript 5 07.08.2013 22:51
Составить регулярное выражение для гугла alerzo Events/DOM/Window 1 18.02.2013 16:55
Помогите составить регулярное выражение Ucorp Общие вопросы Javascript 1 17.10.2012 16:28