PHP.SU

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

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

> Найдено сообщений: 8
curiosity Отправлено: 18 Июля, 2018 - 10:57:28 • Тема: Как в регулярное выражение добавить html спецсимвол, например &#039 ; • Форум: Регулярные выражения

Ответов: 14
Просмотров: 6527
Строитель пишет:
curiosity, скачайте книгу "Регулярные выражения 3-е издание" Джеффри Фридл. В ней описаны все тонкости.

Так и сделаю. Благодарю!
curiosity Отправлено: 18 Июля, 2018 - 00:34:35 • Тема: Как в регулярное выражение добавить html спецсимвол, например &#039 ; • Форум: Регулярные выражения

Ответов: 14
Просмотров: 6527
Строитель пишет:
круглые скобки помимо группировки, выполняют ещё и "захват" найденных соответствий

Благодаря вам, думаю, я словил "нить" о том, что такое "без обратной ссылки" и "захват".

А вот здесь
Строитель пишет:
Ещё одна особенность захватывающих скобок - это возможность ссылаться на т.н. "подмаски" прямо внутри шаблона

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

Еще раз спасибо вам, за время и внимание уделенное моим вопросам.

P.S.
Буду еще более благодарен, если дадите ссылку на человеко-понятный талмуд по этой тем.
Пока все, что нагуглил, достаточно сухо и концентрированно, а иногда и вовсе непонятно.
curiosity Отправлено: 17 Июля, 2018 - 16:59:10 • Тема: Как в регулярное выражение добавить html спецсимвол, например &#039 ; • Форум: Регулярные выражения

Ответов: 14
Просмотров: 6527
Строитель пишет:
\pL - это упрощённо говоря буквы (латиница). А если дописать к шаблону модификатор u, то последовательность символов (иначе говоря - символьный класс) \pL будет соответствовать ещё и кириллице. \s - это символьный класс пробельных символов. Что-то ещё разъяснить?

Спасибо! Благодаря вам, теперь стал чуть больше понимать в такой не простой теме под названием "Regular expressions".

Но если вам не сложно, еще вот этот момент, чтоб закрепить.
Цитата:
(?:&#039 ;)

Смотря в мануалы, я вижу:
Цитата:
(?:шаблон) - группировка как и '( )', но без обратной ссылки.

Вот это "без обратной ссылки" мне никак не дается.
Интуитивно понимаю, что надо еще несколько раз прочесть мануалы, чтоб понять смысл вот этого "без обратной ссылки" и в чем принципиальная разница между ( ) и (?:шаблон).

И еще, я правильно понял, если необходимо разрешить еще какие-либо спецсимволы, то за *(?:&#039 ;) добавляю еще одну группу например *(*(?:"))
curiosity Отправлено: 17 Июля, 2018 - 16:28:36 • Тема: Как в регулярное выражение добавить html спецсимвол, например &#039 ; • Форум: Регулярные выражения

Ответов: 14
Просмотров: 6527
Строитель пишет:

CODE (htmlphp):
скопировать код в буфер обмена
  1. /^[\pL\s]+(?:[\pL\s]*(?:&#039 ;)*)*$/u



Строитель, огромное спасибо! Это действительно даже больше, чем мне нужно было.
особенно был приятно удивлен конструкцией:
Цитата:
[\pL\s]

Еще раз спасибо вам и этому сообществу!
(Добавление)
Мелкий пишет:
Скобки слегка не там:
Проще было бы кстати инвертировать логику, добавить кавычки в символьную маску и

Дело в том, что вариант не подходит.
Данные приходят уже с спецсимволом, а после приходится обрабатывать.

Здесь я лишь указал урезанный код для примера.

Мелкий, но спасибо вам за правильный совет!
Приятно.
curiosity Отправлено: 17 Июля, 2018 - 13:15:22 • Тема: Как в регулярное выражение добавить html спецсимвол, например &#039 ; • Форум: Регулярные выражения

Ответов: 14
Просмотров: 6527
Цитата:
PHP:
скопировать код в буфер обмена
  1. '/^[A-Za-zА-Яа-яЁё\s]+|(?:&#039 ;)+$/u'
Разумеется без лишнего пробела.

К сожалению, такой вариант не правильный.
Теперь эта регулярка будет пропускать не только &#039 ;, но и все подряд.
А потому результат всегда положительный...
curiosity Отправлено: 17 Июля, 2018 - 11:21:18 • Тема: Как в регулярное выражение добавить html спецсимвол, например &#039 ; • Форум: Регулярные выражения

Ответов: 14
Просмотров: 6527
Необходимо в preg_match_all добавить разрешение на html-спецсмивол одинаронй кавычки ' (&#039 ;)
*(!!!Внимание, в
Цитата:
&#039 ;
- везде пишу лишний пробел перед ";", потому как редактор форума режет!..)

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $value = "O'Brain";
  4.  
  5. //Все двойные и одинарные кавычки будут заменять на &#039 ;
  6. $value = preg_replace("/(\")|(\')|(`)/", '&#039 ;', $value);
  7.  
  8. echo $value; //O&#039 ;Brain
  9. echo "\n";
  10.  
  11. //?Как в эту регулярку добавить разрешение на спецсимвол html &#039 ;
  12. $result = (bool) preg_match_all('/^[A-Za-zА-Яа-яЁё\s]+$/u', $value);
  13. if (!$result) {
  14.    echo 'Поле заполнено некорректно!';
  15. } else {
  16.    echo 'Корректно!';
  17. }
  18.  
  19.  
curiosity Отправлено: 01 Октября, 2015 - 18:26:13 • Тема: Как узнать регистр первой буквы в строке utf-8? • Форум: Кодировки и все смежное

Ответов: 3
Просмотров: 5370
Мелкий, Deonis Спасибо!
Как-то я не сообразил, что функции mb_strtoupper() и mb_strtolower() можно использовать таким образом... Хотя их и рассматривал.
Благо, что есть такие форумы, как этот и такие отзывчивые гуру, как вы!

Правильный результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $value = "Съешь ещё этих мягких французских булок";
  4. echo "$value<br>";
  5.  
  6. //Вывожу первый символ (для проверки)
  7. $first = mb_substr ($value, 0, 1, 'utf-8');
  8. echo "$first<br>";
  9.  
  10. //Узнаю какой регистр
  11. if( mb_strtolower($first, 'utf-8') != $first ) {
  12.        echo "Верхний<br>";
  13. } else {
  14.        echo "Нижний<br>";
  15. }
  16.  
  17. ?>
  18.  
curiosity Отправлено: 01 Октября, 2015 - 17:54:39 • Тема: Как узнать регистр первой буквы в строке utf-8? • Форум: Кодировки и все смежное

Ответов: 3
Просмотров: 5370
Задача, казалось бы, простая.
Есть текст и необходимо определить какой регистр у первого символа строки.
С английскими символами проблем нет. Но вот с кириллицей начинаются проблемы.
Использую, конечно же UTF-8, но...
В общем написал вот так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5.         <title>Верхний регистр</title>
  6.         <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  7. </head>
  8. <body>
  9.  
  10. <?php
  11. $value = "Съешь ещё этих мягких французских булок";
  12.  
  13. //Вывожу первый символ (для проверки)
  14. $first = mb_substr($value,0,1,'UTF-8');
  15. echo "$first<br>";
  16.  
  17. //Узнаю какой регистр
  18. if(ctype_upper($first)){
  19.         echo "Верхний<br>";
  20. }else{
  21.         echo "Нижний<br>";
  22. }
  23. ?>
  24.  
  25. </body>
  26. </html>
  27.  

Но работает это, мягко говоря, странно. С латиницей, как всегда, все отлично. А вот с кирюхой через раз, а точней - вообще криво.
Я так понял, что ctype_upper() не видит кодировку UTF-8...
Или же проблема в чем то другом.
Ребята, помоги разобраться.
Как нужно написать, чтоб всегда получать правильный регистр первого символа строки в кириллице?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB