Тег TITLE

Содержание
  1. Извлечение данных с помощью регулярных выражений PHP
  2. Текст из скобок
  3. Результат:
  4. Текст из HTML тегов
  5. Результат:
  6. URL из текста
  7. Результат:
  8. href из ссылок
  9. Результат:
  10. Анкоры ссылок
  11. Результат:
  12. Src из тегов img
  13. Результат:
  14. E-mail адреса из текста
  15. Результат:
  16. Цвета
  17. HEX/HEXA
  18. Результат:
  19. RGB/RGBA
  20. Проверка данных регулярными выражениями
  21. Проверка чисел
  22. Проверка даты по формату
  23. Проверка номера телефона
  24. Проверка E-mail
  25. Логин
  26. Проверка md5-хэша
  27. Цвета
  28. IP адреса
  29. Комментарии
  30. Другие публикации
  31. Проверка данных регулярными выражениями в PHP
  32. Проверка набора из латинских букв и цифр
  33. Проверка на кириллицу и цифры
  34. Проверка на число
  35. Проверка логина
  36. Проверка Email
  37. Проверка номера телефона
  38. Проверка даты по формату
  39. Проверка md5-хэша
  40. Проверка IP адресов
  41. Проверка доменного имени
  42. Phone number regex PHP
  43. The basic international phone number validation
  44. Extra information about validating phone number
  45. Create an internal tool with UI Bakery
  46. Как вырезать российские номера телефона из строки?

Извлечение данных с помощью регулярных выражений PHP

Получение данных с помощью функций preg_match() и preg_match_all() .

Текст из скобок

Извлечение содержимого из круглых, квадратных и фигурных скобок:

$text = ' Телеобъектив: диафрагма [ƒ/2.8] Широкоугольный объектив: (диафрагма ƒ/1.8) По беспроводной сети: Поддержка диапазона: '; /* [. ] */ preg_match_all("/\[(.+?)\]/", $text, $matches); print_r($matches[1]); /* (. ) */ preg_match_all("/\((.+?)\)/", $text, $matches); print_r($matches[1]); /* */ preg_match_all("/\<(.+?)\>/", $text, $matches); print_r($matches[1]); /* */ preg_match_all("/\<(.+?)\>/", $text, $matches); print_r($matches[1]);

Результат:

Array ( [0] => ƒ/2.8 ) Array ( [0] => диафрагма ƒ/1.8 ) Array ( [0] => до 13 часов ) Array ( [0] => Dolby Vision и HDR10 )

Текст из HTML тегов

$text = '  

Тег H1

Текст 1

Текст 2

'; /* */ preg_match('/<title[^>]*?>(.*?)/si', $text, $matches); echo $matches[1]; /* <h2>*/ preg_match('/<h1[^>]*?>(.*?)/si', $text, $matches); echo $matches[1]; /* Извлекает текст из всех <p>*/ preg_match_all('/<p[^>]*?>(.*?)/si', $text, $matches); print_r($matches[1]);</code></pre> <h4 id="rezultat-2">Результат:</h4> <pre><code >Тег TITLE Тег H1 Array ( [0] => Текст 1 [1] => Текст 2 )</code></pre> <h2 id="url-iz-teksta"> URL из текста </h2> <pre><code >$text = 'Text http://ya.ru text http://google.ru text.'; preg_match_all('/(http:\/\/|https:\/\/)?(www)?([\da-z\.-]+)\.([a-z\.])([\/\w\.-\?\%\&]*)*\/?/i', $text, $matches); print_r($matches[0]);</code></pre> <h4 id="rezultat-3">Результат:</h4> <pre><code >Array ( [0] => http://ya.ru [1] => http://google.ru )</code></pre> <h2 id="href-iz-ssylok"> href из ссылок </h2> <pre><code >$text = ' Яндекс Google Mail.ru '; preg_match_all('//i', $text, $matches); print_r($matches[1]);</code></pre> <h4 id="rezultat-4">Результат:</h4> <pre><code >Array ( [0] => http://ya.ru [1] => http://google.ru [2] => http://mail.ru )</code></pre> <h2 id="ankory-ssylok"> Анкоры ссылок </h2> <pre><code >$text = ' Яндекс Google Mail.ru '; preg_match_all('/(.*?)/i', $text, $matches); print_r($matches[1]);</code></pre> <h4 id="rezultat-5">Результат:</h4> <pre><code >Array ( [0] => Яндекс [1] => Google [2] => Mail.ru )</code></pre> <h2 id="src-iz-tegov-img"> Src из тегов img </h2> <pre><code >$text = 'text text'; preg_match_all('//is', $text, $matches); print_r($matches[1]);</code></pre> <h4 id="rezultat-6">Результат:</h4> <h2 id="e-mail-adresa-iz-teksta"> E-mail адреса из текста </h2> <pre><code >$text = 'text admin@mail.ru text text text admin@ya.ru'; preg_match_all('/([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]/i', $text, $matches); print_r($matches[0]);</code></pre> <h4 id="rezultat-7">Результат:</h4> <pre><code >Array ( [0] => admin@mail.ru [1] => admin@ya.ru )</code></pre> <h2 id="tsveta"> Цвета </h2> <h3 id="hex-hexa">HEX/HEXA</h3> <pre><code >$css = ' body < color: #000; background: #4545; >header < color: #111111; background: #00000080; >'; preg_match_all('/#(?:[0-9a-f])/i', $css, $matches); print_r($matches[0]);</code></pre> <h4 id="rezultat-8">Результат:</h4> <pre><code >Array ( [0] => #000 [1] => #4545 [2] => #111111 [3] => #00000080 )</code></pre> <h3 id="rgb-rgba">RGB/RGBA</h3> <pre><code >$css = ' body < color: rgb(0,0,0); background: rgba(17,85,68,0.33); >header < color: rgb(17,17,17); background: rgba(0,0,0,0.5); >'; preg_match_all('/((rgba)\((\d,\s?)(1|0?\.?\d+)\)|(rgb)\(\d(,\s?\d)\))/i', $css, $matches); print_r($matches[0]);</code></pre> <pre><code >Array ( [0] => rgb(0,0,0) [1] => rgba(17,85,68,0.33) [2] => rgb(17,17,17) [3] => rgba(0,0,0,0.5) )</code></pre> <p><a href="https://snipp.ru/php/preg-match">Источник</a></p> <h2 id="proverka-dannyh-regulyarnymi-vyrazheniyami">Проверка данных регулярными выражениями</h2> <p>Сборник регулярных выражений с примерами на PHP для проверки данных из полей форм.</p> <h2 id="proverka-chisel"> Проверка чисел </h2> <pre>$text = '1'; if (preg_match("/^\d+$/", $text)) < echo 'yes'; >else</pre> <p>Числа с плавающей точкой (разделитель точка):</p> <pre>$text = '-1.0'; if (preg_match("/^\-?\d+(\.\d)?$/", $text)) < echo 'yes'; >else</pre> <h2 id="proverka-daty-po-formatu"> Проверка даты по формату </h2> <pre>$text = '02.12.2018'; if (preg_match("/^(08|[12]9|3[01])[\.](01|1[012])[\.](19|20)\d\d$/", $text)) < echo 'yes'; >else</pre> <pre>$text = '2018-04-02'; if (preg_match("/^2-(01|1[012])-(02|14|25|3[01])$/", $text)) < echo 'yes'; >else</pre> <h2 id="proverka-nomera-telefona"> Проверка номера телефона </h2> <p>Ориентировано на российские мобильные + городские с кодом из 3 цифр.</p> <pre>$text = '+7(495)000-00-00'; if (preg_match("/^((8|\+7)[\- ]?)?(\(?\d\)?[\- ]?)?[\d\- ]$/", $text)) < echo 'yes'; >else</pre> <h2 id="proverka-e-mail"> Проверка E-mail </h2> <pre>$text = 'mail@snipp.ru'; if (preg_match("/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]$/i", $text)) < echo 'yes'; >else</pre> <h2 id="login"> Логин </h2> <p>Латинские буквы, цифры, — и _ .</p><script data-noptimize="" data-wpfc-render="false"> /* <![CDATA[ */ fpm_start( "true" ); /* ]]> */ </script> <pre>$text = 'admin-1'; if (preg_match("/^[a-z0-9_-]$/i", $text)) < echo 'yes'; >else</pre> <h2 id="proverka-md5-hesha"> Проверка md5-хэша </h2> <pre>$text = 'ca040cb5d6c2ba8909417ef6b8810e2e'; if (preg_match("/^[a-f0-9]$/", $text)) < echo 'yes'; >else</pre> <h2 id="tsveta-2"> Цвета </h2> <p>Шестнадцатеричные коды цветов #FFF и #FFFFFF .</p> <pre>$text = '#fff'; if (preg_match("/^#(?:(?:[a-fd]))$/i", $text)) < echo 'yes'; >else</pre> <h2 id="ip-adresa"> IP адреса </h2> <pre>$text = '192.168.0.1'; if (preg_match("/^((253|22\d|[01]?\d\d?)\.)(255|23\d|[01]?\d\d?)$/", $text)) < echo 'yes'; >else</pre> <pre>$text = '2001:DB8:3C4D:7777:260:3EFF:FE15:9501'; if (preg_match("/((^|:)([0-9a-fA-F]))$/i", $text)) < echo 'yes'; >else</pre> <h3 id="kommentarii">Комментарии</h3> <h3 id="drugie-publikatsii">Другие публикации</h3> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20350%200'%3E%3C/svg%3E" alt="Маски ввода для текстовых полей" width="350" data-lazy-src="https://snipp.ru/uploads/view/6f67da0d024b762d095501fb8e22aed5.jpg"/><noscript><img decoding="async" src="https://snipp.ru/uploads/view/6f67da0d024b762d095501fb8e22aed5.jpg" alt="Маски ввода для текстовых полей" width="350"/></noscript></p> <p>Применение масок ввода у полей форм значительно упрощает их использование, уменьшает количество ошибок и приводит.</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20350%200'%3E%3C/svg%3E" alt="date() – форматирование даты PHP" width="350" data-lazy-src="https://snipp.ru/uploads/view/fa946b7b297f289c0a91508a0a3576ae.png"/><noscript><img decoding="async" src="https://snipp.ru/uploads/view/fa946b7b297f289c0a91508a0a3576ae.png" alt="date() – форматирование даты PHP" width="350"/></noscript></p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20350%200'%3E%3C/svg%3E" alt="Генерация случайных буквенно-цифровых кодов в PHP" width="350" data-lazy-src="https://snipp.ru/uploads/view/a0c8c028ca1a973ebdada708d7035d15.png"/><noscript><img decoding="async" src="https://snipp.ru/uploads/view/a0c8c028ca1a973ebdada708d7035d15.png" alt="Генерация случайных буквенно-цифровых кодов в PHP" width="350"/></noscript></p> <p>Несколько примеров, как сгенерировать случайные последовательности численных и буквенных строк заданной длины и.</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20350%200'%3E%3C/svg%3E" alt="Работа с FTP в PHP" width="350" data-lazy-src="https://snipp.ru/uploads/view/b89cae1cefbadd5572b25358089481a5.png"/><noscript><img decoding="async" src="https://snipp.ru/uploads/view/b89cae1cefbadd5572b25358089481a5.png" alt="Работа с FTP в PHP" width="350"/></noscript></p> <p>Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20350%200'%3E%3C/svg%3E" alt="Виртуальные коды клавиш (Virtual-Key Codes)" width="350" data-lazy-src="https://snipp.ru/uploads/view/d4abd5e5ff9a5efb81bf3407e0f1a6db.jpeg"/><noscript><img decoding="async" src="https://snipp.ru/uploads/view/d4abd5e5ff9a5efb81bf3407e0f1a6db.jpeg" alt="Виртуальные коды клавиш (Virtual-Key Codes)" width="350"/></noscript></p> <p>В следующей таблице приведены имена констант (VK Codes), десятичные и шестнадцатеричные значения для кодов виртуальных.</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20350%200'%3E%3C/svg%3E" alt="Загрузка файлов на сервер PHP" width="350" data-lazy-src="https://snipp.ru/uploads/view/4a8bbfe6ef3a935e4e92fe068ffd630d.png"/><noscript><img decoding="async" src="https://snipp.ru/uploads/view/4a8bbfe6ef3a935e4e92fe068ffd630d.png" alt="Загрузка файлов на сервер PHP" width="350"/></noscript></p> <p>В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.</p> <p><a href="https://snipp.ru/php/validating-regxp">Источник</a></p> <h2 id="proverka-dannyh-regulyarnymi-vyrazheniyami-2">Проверка данных регулярными выражениями в PHP</h2> <p>Сборник основных шаблонов регулярных выражений на PHP для проверки данных.</p> <h2 id="proverka-nabora-iz-latinskih-bukv-i-tsifr">Проверка набора из латинских букв и цифр</h2> <p>Регулярное выражение для проверки набора только из латинских букв и цифр:</p> <pre>$pattern = '/^[a-z0-9]+$/i'; $var = 'String123'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <p>Если необходимо добавить в набор некоторые символы:</p> <pre><code >// использовать тире $pattern = '/^[a-z0-9-]+$/i'; $var = 'String-123'; // использовать знак подчёркивания $pattern = '/^[a-z0-9-_]+$/i'; $var = 'String-1_23'; // использовать точку $pattern = '/^[a-z0-9-_.]+$/i'; $var = 'String-1_23.end'; // использовать пробел $pattern = '/^[a-z0-9-_. ]+$/i'; $var = 'String-1_23.end ps. ';</code></pre> <h2 id="proverka-na-kirillitsu-i-tsifry">Проверка на кириллицу и цифры</h2> <p>Регулярное выражение для проверки набора только из букв кириллицы и цифр:</p> <pre>$pattern = '/^[а-яё0-9]+$/iu'; $var = 'Строка123'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <h2 id="proverka-na-chislo">Проверка на число</h2> <p>Регулярное выражение для проверки данных на целое число:</p> <pre>$pattern = '/^\d+$/'; // Исключаем 0 $pattern = '/^6+$/'; // Не больше 1-й цифры $pattern = '/^6+$/'; // Максимум 4 цифры $pattern = '/^3+$/'; $var = 123; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <p>Регулярное выражение для проверки данных на тип Float (числа с плавающей точкой):</p> <pre><code >$pattern = '/^2*[.,]4+$/'; $var = 123.45; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else < echo 'Проверка не пройдена!'; >// Если нужно, чтобы пропускал и целые числа $pattern = '/^1*[.,]?1+$/';</code></pre> <h2 id="proverka-logina">Проверка логина</h2> <p>Регулярное выражение для проверки логина. Разрешено использовать только латинские буквы, цифры, тире и знак подчёркивания. Длина логина от 2 до 20 символов (включительно):</p> <pre>$text = 'Login_123-45'; if (preg_match("/^[a-z0-9-_]$/i", $text)) < echo 'Проверка пройдена успешно!'; >else</pre> <h2 id="proverka-email">Проверка Email</h2> <p>Регулярное выражение для проверки Email:</p> <pre>$pattern = '/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]$/'; $var = 'admin@site.com'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <p>Более современный и правильный способ:</p> <pre><code >$var = 'admin@___site.com'; $email = filter_var($var, FILTER_SANITIZE_EMAIL); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) throw new InvalidArgumentException('Invalid Email'); return $email;</code></pre> <h2 id="proverka-nomera-telefona-2">Проверка номера телефона</h2> <p>Регулярное выражение для проверки номера телефона:</p> <pre>$pattern = '/^((8|\+7)[\- ]?)?(\(?\d\)?[\- ]?)?[\d\- ]$/'; $var = '+7(982)000-00-00'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <h2 id="proverka-daty-po-formatu-2">Проверка даты по формату</h2> <pre>$pattern = '/^(06|[12]7|3[01])[\.](08|1[012])[\.](19|20)\d\d$/'; $var = '10.12.2019'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <pre>$pattern = '/^9-(08|1[012])-(09|13|26|3[01])$/'; $var = '2019-12-10'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <h2 id="proverka-md5-hesha-2">Проверка md5-хэша</h2> <p>Регулярное выражение для проверки на корректность md5-хэша:</p> <pre>$pattern = '/^[a-f0-9]$/'; $var = '341be97d9aff90c9978347f66f945e77'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <h2 id="proverka-ip-adresov">Проверка IP адресов</h2> <p>Регулярное выражение для проверки IPv4 адреса:</p> <pre>$pattern = '/^((255|23\d|[01]?\d\d?)\.)(251|23\d|[01]?\d\d?)$/'; $var = '192.168.0.1'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <pre>$pattern = '/((^|:)([0-9a-fA-F]))$/i'; $var = '2001:DB8:3C4D:7777:260:3EFF:FE15:9501'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <h2 id="proverka-domennogo-imeni">Проверка доменного имени</h2> <p>Регулярное выражение для проверки на корректность доменного имени сайта:</p> <pre>$pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.])([\/\w \.-]*)*\/?$/'; $var = 'https://prowebmastering.ru'; if (preg_match($pattern, $var)) < echo 'Проверка пройдена успешно!'; >else</pre> <p><a href="https://prowebmastering.ru/php-regxp-data-validation.html">Источник</a></p> <h2 id="phone-number-regex-php">Phone number regex PHP</h2> <p>The regular expressions below can be used to validate if a string is a valid phone number format and to extract a phone number from a string. Please note that this validation can not tell if a phone number actually exists.</p> <h3 id="the-basic-international-phone-number-validation">The basic international phone number validation</h3> <p>A simple regex to validate string against a valid international phone number format without delimiters and with an optional plus sign:</p> <p>Enter a text in the input above to see the result</p> <pre><code validate phone number $phone_number_validation_regex = "/^\\+?16$/"; echo preg_match($phone_number_validation_regex, '+12223334444'); > </pre> <h3>The more complex phone number validation</h3> <p>This regular expression will match phone numbers entered with delimiters (spaces, dots, brackets, etc.)</p> <p>Enter a text in the input above to see the result</p> <pre><code Validate phone number $phone_number_validation_regex = "/^\\+?\\d?[-.\\s]?\\(?\\d?\\)?[-.\\s]?\\d[-.\\s]?\\d[-.\\s]?\\d$/"; echo preg_match($phone_number_validation_regex, '+1 (615) 243-5172'); // returns 1</code> </pre> <p>Enter a text in the input above to see the result</p> <h4 id="extra-information-about-validating-phone">Extra information about validating phone number</h4> <p>While validation of phone numbers using regex can give a possibility to check the format of the phone number, it does not guarantee that the number exists.</p> <p>There might be also an option to leave a phone number field without any validation since some users might have:</p> <ul> <li>More complex phone numbers with extensions</li> <li>The different phone numbers for calling them on a different time of day</li> </ul> <h2 id="create-an-internal-tool-with-ui-bakery">Create an internal tool with UI Bakery <strong><br/></strong> </h2> <p>Discover UI Bakery – an intuitive visual internal tools builder.</p> <p><a href="https://uibakery.io/regex-library/phone-number-php">Источник</a></p> <h2 id="kak-vyrezat-rossiyskie-nomera-telefona-iz">Как вырезать российские номера телефона из строки?</h2> <p>Как выпилить явные номера телефона в различных написаниях: <br/>89108002001 <br/>901 2010 705 <br/>901 201 07 05 <br/>+7 901-201-07-05 <br/>901-201-07-05 <br/>(901)201-07-05 <br/>(901) 20107-05 <br/>8 9 1 0 8 0 0 2 0 0 1 <br/>и т.д <br/>Не знаю точно к чему здесь привязаться. Девятка в начале и больше или равно 10 цифрам?</p> <p>Средний <strong>1</strong> комментарий</p> <p>Absolute138, достаточно добавить символы \ и / (их нужно обязательно экранировать) в регулярное выражение: <br/>[\(+\/\\]?(\d[+\(\)\/\\ -]*) <br/>https://regex101.com/r/jjoc7E/3</p> <pre><code><b>Warning</b>: preg_replace(): Compilation failed: unmatched parentheses</code></pre> <p>Обратный слеш нужно указывать как \\\\</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="AleksandrB" data-lazy-src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg"/><noscript><img decoding="async" src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg" alt="AleksandrB"/></noscript></p> <pre><code>ваш код: 66666666666 не забывайте про :0( 123 213 123 номер заказа: 1785-3666-2232</code></pre> <p>Александр, здесь важен контекст. Например, в контексте доски объявлений типа Авито, где нельзя в описание объявления постить номера телефонов - вариант Дмитрий - очень даже годный, как по мне.</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="AleksandrB" data-lazy-src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg"/><noscript><img decoding="async" src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg" alt="AleksandrB"/></noscript></p> <p>Absolute138, нет, не годный, совершенно не годный. Мало того что он не отрежет лишние номера, так еще и покрамсает совершенно не номера телефонов. Человек может, в том же авито в описании оставить полное название модели, а они часто состоят только из цифр.</p> <p>Александр, Вы можете предложить свой вариант, который, на ваш взгляд, будет лучше решать поставленную задачу.</p> <p>Александр, да, возможно вы правы про Авито. Неудачный пример. У нас анкеты юзеров (типа профессиональное сообщество) и там человек заполняет "О себе". Пока не могу представить что там может выпилиться ценного этой регуляркой. В любом случае для нас критично вырезать номера телефонов - в ручном режиме это жесть и за неимением лучшего - пока сойдет итак, полагаю. Понятно, что юзеры исхитряются и могут словами написать цифры, но всё равно это сильно меньше править на премодерации.</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="AleksandrB" data-lazy-src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg"/><noscript><img decoding="async" src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg" alt="AleksandrB"/></noscript></p> <p>Absolute138, а по другому никак. Только ручками, только ручками. Все дело в том что невозможно. Просто реально невозможно поймать номер телефона. Существует невероятное множество форматов, видов, цифр. Их может быть 10, 11, 12 или 6. Вы НЕ ПОЙМАЕТЕ номер без ущерба контенту.</p> <p>Если речь идет о общедоступном поле, которое заполняет сам юзер, то о конфиденциальности речи идти не может. Если юзер захотел оставить номер, зачем его отрезать, Если вы принципиально не хотите что бы юзер оставлял номер, то да, он может оставить буквами, а еще может ссылку на телеграм, а еще как угодно обойти это ваше правило. Ваш подход изначально бредовый - мы запретим, правда запрет этот можно легко обойти, но он может помешать людям, которые его не нарушали. Мне это очень сильно напоминает роскомнадзор с блокировкой телеграма.</p> <p>Не будьте роскомнадзором, не выдумывайте бессмысленные запреты.</p> <p>Александр, спасибо за Ваше мнение. После добавления/редактирования поле в любом случае попадает на модерацию и пока не будет одобрено - на сайте будет показываться последняя одобренная версия этого поля. Одно - править текст за юзером. Другое - просто нажать кнопку "Одобрить" - меньше бессмысленного ручного труда. Пусть даже не во всех случаях это сработает и где-то всё-таки придется вносить правки. Нам нельзя постить номера - иначе упадет конверсия, никто не будет регистрироваться, чтобы связаться с автором, а просто позвонит ему.</p> <p><img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="AleksandrB" data-lazy-src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg"/><noscript><img decoding="async" src="https://habrastorage.org/r/w60/webt/5f/29/6c/5f296cc6c30ec587599107.jpeg" alt="AleksandrB"/></noscript></p> <p>Absolute138, постите его описание и сразу отправляйте на модерацию. За время которое потратит модератор номер человека сможет увидеть пару человек. Если модер видит номер - накладывает санкции и сразу отменяет изменения.</p> <p><a href="https://qna.habr.com/q/855689">Источник</a></p> <div class="fpm_end"></div><div style="clear:both; margin-top:0em; margin-bottom:1em;"><a href="https://business-programming.ru/programmy-dlya-html-redaktirovaniya/" target="_blank" rel="dofollow" class="u594507f957fac35348cb461899ca22fb"><!-- INLINE RELATED POSTS 1/3 //--><style> .u594507f957fac35348cb461899ca22fb { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .u594507f957fac35348cb461899ca22fb:active, .u594507f957fac35348cb461899ca22fb:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .u594507f957fac35348cb461899ca22fb { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .u594507f957fac35348cb461899ca22fb .ctaText { font-weight:bold; color:#464646; text-decoration:none; font-size: 16px; } .u594507f957fac35348cb461899ca22fb .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .u594507f957fac35348cb461899ca22fb:hover .postTitle { text-decoration: underline!important; } </style><div style="padding-left:1em; padding-right:1em;"><span class="ctaText">Читайте также:</span>  <span class="postTitle">Программы для html редактирования</span></div></a></div> </div><!-- .entry-content --> </article> <div class="rating-box"> <div class="rating-box__header">Оцените статью</div> <div class="wp-star-rating js-star-rating star-rating--score-0" data-post-id="181898" data-rating-count="0" data-rating-sum="0" data-rating-value="0"><span class="star-rating-item js-star-rating-item" data-score="1"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="2"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="3"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="4"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span><span class="star-rating-item js-star-rating-item" data-score="5"><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" class="i-ico"><path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" class="ico-star"></path></svg></span></div> </div> <div class="entry-social"> <div class="social-buttons"><span class="social-button social-button--vkontakte" data-social="vkontakte" data-image=""></span><span class="social-button social-button--facebook" data-social="facebook"></span><span class="social-button social-button--telegram" data-social="telegram"></span><span class="social-button social-button--odnoklassniki" data-social="odnoklassniki"></span><span class="social-button social-button--twitter" data-social="twitter"></span><span class="social-button social-button--sms" data-social="sms"></span><span class="social-button social-button--whatsapp" data-social="whatsapp"></span></div> </div> <meta itemprop="author" content="admin"> <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://business-programming.ru/teg-title-22/" content="Тег TITLE"> <meta itemprop="dateModified" content="2023-08-27"> <meta itemprop="datePublished" content="2023-08-29T16:08:49+03:00"> <div itemprop="publisher" itemscope itemtype="https://schema.org/Organization" style="display: none;"><meta itemprop="name" content="Программирование"><meta itemprop="telephone" content="Программирование"><meta itemprop="address" content="https://business-programming.ru"></div> </main><!-- #main --> </div><!-- #primary --> <aside id="secondary" class="widget-area" itemscope itemtype="http://schema.org/WPSideBar"> <div class="sticky-sidebar js-sticky-sidebar"> <div id="block-2" class="widget widget_block"><div class="flatPM_sidebar" data-top="70"> <div id="Q_sidebar"></div> </div></div> </div> </aside><!-- #secondary --> <div id="related-posts" class="related-posts fixed"><div class="related-posts__header">Вам также может понравиться</div><div class="post-cards post-cards--vertical"> <div class="post-card post-card--related post-card--thumbnail-no"> <div class="post-card__title"><a href="https://business-programming.ru/yaschiki-s-usami-python/">Ящики с усами python</a></div><div class="post-card__description">pandas.plotting.boxplot# Make a box-and-whisker plot</div> </div> <div class="post-card post-card--related post-card--thumbnail-no"> <div class="post-card__title"><a href="https://business-programming.ru/primer-ispolzovaniya-svoystva-css-table-layout-74/">Пример использования свойства CSS table-layout.</a></div><div class="post-card__description">table-layout¶ Свойство table-layout определяет, как</div> </div> <div class="post-card post-card--related post-card--thumbnail-no"> <div class="post-card__title"><a href="https://business-programming.ru/primer-ispolzovaniya-svoystva-css-table-layout-73/">Пример использования свойства CSS table-layout.</a></div><div class="post-card__description">HTML Размеры таблицы HTML таблицы могут иметь разные</div> </div> <div class="post-card post-card--related post-card--thumbnail-no"> <div class="post-card__title"><a href="https://business-programming.ru/primer-ispolzovaniya-svoystva-css-table-layout-72/">Пример использования свойства CSS table-layout.</a></div><div class="post-card__description">table-layout¶ Свойство table-layout определяет, как</div> </div> </div></div> </div><!--.site-content-inner--> </div><!--.site-content--> <div class="site-footer-container "> <div class="footer-navigation fixed" itemscope itemtype="http://schema.org/SiteNavigationElement"> <div class="main-navigation-inner full"> <div class="menu-tehnicheskoe-menyu-container"><ul id="footer_menu" class="menu"><li id="menu-item-12637" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12637"><a href="https://business-programming.ru/pravoobladatelyam/">Правообладателям</a></li> <li id="menu-item-12638" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12638"><a href="https://business-programming.ru/politika-konfidentsialnosti/">Политика конфиденциальности</a></li> <li id="menu-item-12639" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12639"><a href="https://business-programming.ru/kontakty/">Контакты</a></li> </ul></div> </div> </div><!--footer-navigation--> <footer id="colophon" class="site-footer site-footer--style-gray full"> <div class="site-footer-inner fixed"> <div class="footer-bottom"> <div class="footer-info"> © 2024 Программирование </div> <div class="footer-counters"><!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(97921369, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/97921369" style="position:absolute; left:-9999px;" alt=""/></div></noscript> <!-- /Yandex.Metrika counter --></div></div> </div> </footer><!--.site-footer--> </div> <button type="button" class="scrolltop js-scrolltop"></button> </div><!-- #page --> <script>var pseudo_links = document.querySelectorAll(".pseudo-clearfy-link");for (var i=0;i<pseudo_links.length;i++ ) { pseudo_links[i].addEventListener("click", function(e){ window.open( e.target.getAttribute("data-uri") ); }); }</script><script type="text/javascript" id="reboot-scripts-js-extra"> /* <![CDATA[ */ var settings_array = {"rating_text_average":"\u0441\u0440\u0435\u0434\u043d\u0435\u0435","rating_text_from":"\u0438\u0437","lightbox_display":"1","sidebar_fixed":"1"}; var wps_ajax = {"url":"https:\/\/business-programming.ru\/wp-admin\/admin-ajax.php","nonce":"ea4cb145f7"}; /* ]]> */ </script> <script type="text/javascript" src="https://business-programming.ru/wp-content/themes/reboot/assets/js/scripts.min.js" id="reboot-scripts-js"></script> <script>window.lazyLoadOptions = [{ elements_selector: "img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]", data_src: "lazy-src", data_srcset: "lazy-srcset", data_sizes: "lazy-sizes", class_loading: "lazyloading", class_loaded: "lazyloaded", threshold: 300, callback_loaded: function(element) { if ( element.tagName === "IFRAME" && element.dataset.rocketLazyload == "fitvidscompatible" ) { if (element.classList.contains("lazyloaded") ) { if (typeof window.jQuery != "undefined") { if (jQuery.fn.fitVids) { jQuery(element).parent().fitVids(); } } } } }},{ elements_selector: ".rocket-lazyload", data_src: "lazy-src", data_srcset: "lazy-srcset", data_sizes: "lazy-sizes", class_loading: "lazyloading", class_loaded: "lazyloaded", threshold: 300, }]; window.addEventListener('LazyLoad::Initialized', function (e) { var lazyLoadInstance = e.detail.instance; if (window.MutationObserver) { var observer = new MutationObserver(function(mutations) { var image_count = 0; var iframe_count = 0; var rocketlazy_count = 0; mutations.forEach(function(mutation) { for (var i = 0; i < mutation.addedNodes.length; i++) { if (typeof mutation.addedNodes[i].getElementsByTagName !== 'function') { continue; } if (typeof mutation.addedNodes[i].getElementsByClassName !== 'function') { continue; } images = mutation.addedNodes[i].getElementsByTagName('img'); is_image = mutation.addedNodes[i].tagName == "IMG"; iframes = mutation.addedNodes[i].getElementsByTagName('iframe'); is_iframe = mutation.addedNodes[i].tagName == "IFRAME"; rocket_lazy = mutation.addedNodes[i].getElementsByClassName('rocket-lazyload'); image_count += images.length; iframe_count += iframes.length; rocketlazy_count += rocket_lazy.length; if(is_image){ image_count += 1; } if(is_iframe){ iframe_count += 1; } } } ); if(image_count > 0 || iframe_count > 0 || rocketlazy_count > 0){ lazyLoadInstance.update(); } } ); var b = document.getElementsByTagName("body")[0]; var config = { childList: true, subtree: true }; observer.observe(b, config); } }, false);</script><script data-no-minify="1" async src="https://business-programming.ru/wp-content/plugins/rocket-lazy-load/assets/js/16.1/lazyload.min.js"></script><script>function lazyLoadThumb(e,alt){var t='<img loading="lazy" src="https://i.ytimg.com/vi/ID/hqdefault.jpg" alt="" width="480" height="360">',a='<button class="play" aria-label="play Youtube video"></button>';t=t.replace('alt=""','alt="'+alt+'"');return t.replace("ID",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement("iframe"),t="ID?autoplay=1";t+=0===this.parentNode.dataset.query.length?'':'&'+this.parentNode.dataset.query;e.setAttribute("src",t.replace("ID",this.parentNode.dataset.src)),e.setAttribute("frameborder","0"),e.setAttribute("allowfullscreen","1"),e.setAttribute("allow", "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),this.parentNode.parentNode.replaceChild(e,this.parentNode)}document.addEventListener("DOMContentLoaded",function(){var e,t,p,a=document.getElementsByClassName("rll-youtube-player");for(t=0;t<a.length;t++)e=document.createElement("div"),e.setAttribute("data-id",a[t].dataset.id),e.setAttribute("data-query", a[t].dataset.query),e.setAttribute("data-src", a[t].dataset.src),e.innerHTML=lazyLoadThumb(a[t].dataset.id,a[t].dataset.alt),a[t].appendChild(e),p=e.querySelector('.play'),p.onclick=lazyLoadYoutubeIframe});</script> </body> </html>