Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запретить выставлять пробел после
Форумы портала PHP.SU » » Вопросы новичков » Запретить выставлять пробел после

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

1. Gerb - 09 Октября, 2019 - 05:15:09 - перейти к сообщению


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

Весь текст стирает, почему?
2. LIME - 09 Октября, 2019 - 20:56:40 - перейти к сообщению
Не понял магия
3. Gerb - 09 Октября, 2019 - 21:04:54 - перейти к сообщению
Блин, так в чем дело? Хм
4. LIME - 09 Октября, 2019 - 21:06:57 - перейти к сообщению
Вопрос сформулируй нормально
5. Gerb - 10 Октября, 2019 - 18:12:06 - перейти к сообщению
В тексте присутствуют теги перед которыми не нужно выставлять тег переноса строки, 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>
6. Строитель - 11 Октября, 2019 - 09:36:04 - перейти к сообщению
Gerb, примеры html-кода будут? Без ваших исходников вряд ли кто либо вам сможет помочь.
7. Gerb - 11 Октября, 2019 - 22:22:06 - перейти к сообщению
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'

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

Что нет необходимости ставить тег перед определенными тегами и за определенными тегами.
8. Gerb - 12 Октября, 2019 - 22:54:38 - перейти к сообщению
Хелп Огорчение
9. Строитель - 12 Октября, 2019 - 23:47:24 - перейти к сообщению
Gerb пишет:
Хелп
Строитель пишет:
примеры html-кода будут?

Внесу ясность: в таких случаях пишут исходную строку, и желаемый результат. А вы, вместо этого, опубликовали набор шаблонов.
10. LIME - 12 Октября, 2019 - 23:51:02 - перейти к сообщению
$1 это в строке замены используется. Если все же такое встречается в текст, то надо экранировать.
(Добавление)
Или в одинарные кавычки
11. Gerb - 13 Октября, 2019 - 15:53:23 - перейти к сообщению
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>
12. Gerb - 14 Октября, 2019 - 03:54:40 - перейти к сообщению
Хелп
13. Строитель - 14 Октября, 2019 - 14:03:45 - перейти к сообщению
Gerb
Спойлер (Отобразить)
14. Gerb - 14 Октября, 2019 - 19:50:19 - перейти к сообщению
Спс, но в таком случаи нет переноса строк совсем

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.  
15. Строитель - 14 Октября, 2019 - 20:02:46 - перейти к сообщению
Gerb пишет:
но в таком случаи нет переноса строк совсем
Т.е., так надо?
Спойлер (Отобразить)

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

 

Powered by ExBB FM 1.0 RC1