PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Gerb
Отправлено: 09 Октября, 2019 - 05:15:09
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)






Не понимаю, нет замены переноса строки после <ul> и <li>
Но если добавить третье условие после которого не нужно выставлять пробел, после <div>
PHP:
скопировать код в буфер обмена
  1. '#(?<!(?:ul\>|li\>|div\>)\])\r\n#i'

Весь текст стирает, почему?
 
 Top
LIME
Отправлено: 09 Октября, 2019 - 20:56:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 10414
Дата рег-ции: Нояб. 2010  


Помог: 309 раз(а)




Не понял магия


-----
DDD
 
 Top
Gerb
Отправлено: 09 Октября, 2019 - 21:04:54
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)




Блин, так в чем дело? Хм
 
 Top
LIME
Отправлено: 09 Октября, 2019 - 21:06:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 10414
Дата рег-ции: Нояб. 2010  


Помог: 309 раз(а)




Вопрос сформулируй нормально


-----
DDD
 
 Top
Gerb
Отправлено: 10 Октября, 2019 - 18:12:06
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)




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


PHP:
скопировать код в буфер обмена
  1. $text = preg_replace([ '#\[List\](?>\s*\[\*\])*(.+?)(\[\*\]\s)*\[\/List\]#is',
  2.                                  '#\[\*\]#is',
  3.                                   '#(?<!(?:ul\>|li\>)\])\r\n#i'
  4.                                 ], [
  5.                                   '<ul><li><i class=\"fad fa-circle\"></i>$1</li></ul>',
  6.                                   '</li><li><i class=\"fad fa-circle\"></i>',
  7.                                   '<br/>'
  8.                                  ], trim($text, ' '));
  9.  


Работает, нет замены переноса строки перед тегами <ul> и <li>, необходимо добавить исключение для '<div>'.

Как составить такое правило на замену '#(?<!(?:ul\>|li\>)\])\r\n#i', которое будет выполнять замену переноса строки за исключением.
-Не менять перенос строки если перед переносом строки прописан тег <ul либо <li либо <div
-Точно также не выставлять перенос строки после тегов </ul> </li> и </div>
 
 Top
Строитель Модератор
Отправлено: 11 Октября, 2019 - 09:36:04
Post Id



Участник


Покинул форум
Сообщений всего: 1468
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 66 раз(а)




Gerb, примеры html-кода будут? Без ваших исходников вряд ли кто либо вам сможет помочь.


-----
~ PHP-7 & REGEXP - This is a really powerful kit ~
****************************************
 
 Top
Gerb
Отправлено: 11 Октября, 2019 - 22:22:06
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $text = preg_replace(["#^\r\n#", '#^(?:\s|<br/>)+|(?:\s|<br/>)+$#',
  2.                                  '#\[List\](?>\s*\[\*\])*(.+?)(\[\*\]\s)*\[\/List\]#is',
  3.                                  '#\[\*\]#is',
  4.                                  "#\[h2\](.+?)\[\/h2\]#is",
  5.                                  "#\[h3\](.+?)\[\/h3\]#is",
  6.                                  "#\[QUOTE\](.+?)\[\/QUOTE\]#is",
  7.                                  "#\[left=([0-9]+)\](.+?)\[\/left\]#is",
  8.                                  "#\[right=([0-9]+)\](.+?)\[\/right\]#is",
  9.                                  "#\[center=([0-9]+)\](.+?)\[\/center\]#is",
  10.                                  "#\[size=([0-9]+)\](.+?)\[\/size\]#is",
  11.                                  '#(?<!(?:ul\>|li\>)\])\r\n#i','#\<br/>\s*\</li>#i','#\<br/>\s*\</div>#i','#"\>\s*\<br/>#i','#ul\>\s*\<br/>#i'
  12.                                 ], [
  13.                                  '', '',
  14.                                 '<ul><li><i class=\"fad fa-circle\"></i>$1</li></ul>',
  15.                                 '</li><li><i class=\"fad fa-circle\"></i>',
  16.                                 "<h2>$1</h2>",
  17.                                 "<h3>$1</h3>",
  18.                                 "<blockquote><i class=\"fad fa-quote-left\"></i>$1<i class=\"fad fa-quote-right\"></i></blockquote>",
  19.                                 "<div class=\"p_left rl$1\">$2</div>",
  20.                                 "<div class=\"p_right rl$1\">$2</div>",
  21.                                 "<div class=\"p_center rl$1\">$2</div>",
  22.                                 "<span style=\"font-size:$1px;\">$2</span>",
  23.                                 '<br/>','</li>','</div>','">','ul>',
  24.                                 ], trim($text, ' '));


В данный момент у меня реализовано следующим образом. Мне это безобразие бы убрать
PHP:
скопировать код в буфер обмена
  1.  ,'#\<br/>\s*\</li>#i','#\<br/>\s*\</div>#i','#"\>\s*\<br/>#i','#ul\>\s*\<br/>#i'

Приходится таким образом править перенос где его недолжно быть.
Нет бы сразу указать в

Что нет необходимости ставить тег перед определенными тегами и за определенными тегами.
 
 Top
Gerb
Отправлено: 12 Октября, 2019 - 22:54:38
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)




Хелп Огорчение
 
 Top
Строитель Модератор
Отправлено: 12 Октября, 2019 - 23:47:24
Post Id



Участник


Покинул форум
Сообщений всего: 1468
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 66 раз(а)




Gerb пишет:
Хелп
Строитель пишет:
примеры html-кода будут?

Внесу ясность: в таких случаях пишут исходную строку, и желаемый результат. А вы, вместо этого, опубликовали набор шаблонов.


-----
~ PHP-7 & REGEXP - This is a really powerful kit ~
****************************************
 
 Top
LIME
Отправлено: 12 Октября, 2019 - 23:51:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10414
Дата рег-ции: Нояб. 2010  


Помог: 309 раз(а)




$1 это в строке замены используется. Если все же такое встречается в текст, то надо экранировать.
(Добавление)
Или в одинарные кавычки


-----
DDD
 
 Top
Gerb
Отправлено: 13 Октября, 2019 - 15:53:23
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)




CODE (html):
скопировать код в буфер обмена
  1. [List]
  2.       [*]Список
  3.       [*]Список
  4. [/List]
  5. [right=50]
  6.   Выравнивание по правому краю каю
  7. [/right]
  8. [center=100]
  9.   Выравнивание по центру
  10. [/center]
  11. [left=50]
  12.   Выравнивание по левому каю
  13. [/left]
  14. [H3]Заголовок третьего уровня[/H3]
  15. [H2]Заголовок второго уровня[/H2]
  16.  


Результат
CODE (html):
скопировать код в буфер обмена
  1. <ul>
  2.      <li><i class="fad fa-circle"></i>Список</li>
  3.      <li><i class="fad fa-circle"></i>Список</li>
  4. </ul>
  5. <div class="p_right rl50">  Выравнивание по правому краю каю</div>
  6. <div class="p_center rl100">  Выравнивание по центру</div>
  7. <div class="p_left rl50">  Выравнивание по левому каю</div>
  8. <h3>Заголовок третьего уровня</h3>
  9. <h2>Заголовок второго уровня</h2>


Или
CODE (html):
скопировать код в буфер обмена
  1. [List]
  2.       [*]Список
  3.       [*]Список
  4. [/List]
  5.  
  6. [right=50]
  7.   Выравнивание по правому краю каю
  8. [/right]
  9.  
  10. [center=100]
  11.   Выравнивание по центру
  12. [/center]
  13.  
  14. [left=50]
  15.   Выравнивание по левому каю
  16. [/left]
  17.  
  18. [H3]Заголовок третьего уровня[/H3]
  19.  
  20. [H2]Заголовок второго уровня[/H2]


Результат:
CODE (html):
скопировать код в буфер обмена
  1. <ul>
  2.     <li><i class="fad fa-circle"></i>Список</li>
  3.     <li><i class="fad fa-circle"></i>Список</li>
  4. </ul>
  5. <br>
  6. <div class="p_right rl50">  Выравнивание по правому краю каю</div>
  7. <br>
  8. <div class="p_center rl100">  Выравнивание по центру</div>
  9. <br>
  10. <div class="p_left rl50">  Выравнивание по левому каю</div>
  11. <br>
  12. <h3>Заголовок третьего уровня</h3>
  13. <br>
  14. <h2>Заголовок второго уровня</h2>
 
 Top
Gerb
Отправлено: 14 Октября, 2019 - 03:54:40
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)




Хелп
 
 Top
Строитель Модератор
Отправлено: 14 Октября, 2019 - 14:03:45
Post Id



Участник


Покинул форум
Сообщений всего: 1468
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 66 раз(а)




Gerb
Спойлер (Отобразить)


-----
~ PHP-7 & REGEXP - This is a really powerful kit ~
****************************************
 
 Top
Gerb
Отправлено: 14 Октября, 2019 - 19:50:19
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2019  


Помог: 0 раз(а)




Спс, но в таком случаи нет переноса строк совсем

PHP:
скопировать код в буфер обмена
  1. $text = '[List]
  2.     [*]Список 1
  3.     [*]Список 2
  4.     [*]Список 3
  5.     [*]Список 4
  6. [/List]
  7. [right=50]
  8. Выравнивание по правому краю
  9. [/right]
  10.  
  11. [center=100]
  12. Выравнивание по центру
  13. [/center]
  14.  
  15.  
  16. [left=50]
  17. Выравнивание по левому краю
  18. [/left]
  19.  
  20.  
  21. [H3]Заголовок третьего уровня[/H3]
  22.  
  23.  
  24. [H2]Заголовок второго уровня[/H2]';



Можно ли вот это безобразие
PHP:
скопировать код в буфер обмена
  1. '#(?<!(?:ul\>|li\>)\])\r\n#i','#\<br/>\s*\</li>#i','#\<br/>\s*\</div>#i','#"\>\s*\<br/>#i','#ul\>\s*\<br/>#i',
  2.  
  3. '<br/>','</li>','</div>','">','ul>',
  4.  

PHP:
скопировать код в буфер обмена
  1. Привести в одну регулярку
  2. '#(?<!(?:ul\>|li\>)\])\r\n#i',
  3.  
 
 Top
Строитель Модератор
Отправлено: 14 Октября, 2019 - 20:02:46
Post Id



Участник


Покинул форум
Сообщений всего: 1468
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 66 раз(а)




Gerb пишет:
но в таком случаи нет переноса строк совсем
Т.е., так надо?
Спойлер (Отобразить)

Тогда так
Спойлер (Отобразить)


-----
~ PHP-7 & REGEXP - This is a really powerful kit ~
****************************************
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB