Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

Rendom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Учебники регулярных выражений
 
Кто сможет составить выражение для такого случая:

Код:
 
<table border=0>
<tr>
   <td>blablablabla<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table></td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Нужно удалить из этого всего кусок "<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table>". Иными словами нужно вырезать текст от "<table" до "</table>" внутри которого есть строка "UNIQTEXT", но при этом не удалить лишнего. В результате должно получиться:

Код:
 
<table border=0>
<tr>
   <td>blablablabla</td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Всего записей: 115 | Зарегистр. 27-10-2002 | Отправлено: 23:26 17-05-2005 | Исправлено: AZJIO, 04:05 09-12-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
И теперь это работает,

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

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 10:01 10-12-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
выпрямленный
Он работает частично, только 48 фотографий скачать с первой страницы
Я думаю, что следующий код должен быть изменен с FOR
Где вы его размещаете?, И смесь, регулярное выражение и PHP
 
Добавлено:
Mavrikii

Цитата:
для получения целого числа точку нужно убрать потом.
и не нужно вставлять столько картинок, они портят просмотр темы.

 
как? здесь?
 

Код:
$pages = ceil($pagesnum[1]/48);

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:13 10-12-2022 | Исправлено: zagorisback, 10:16 10-12-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
как? здесь?

что здесь? я про получение числа картинок. регулярка получит 1.123, к примеру, строкой. если нужно число тысяча - нужно убрать точку.
 

Цитата:
Где вы его размещаете?, И смесь, регулярное выражение и PHP

я не понимаю вас.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 10:17 10-12-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
и не нужно вставлять столько картинок, они портят просмотр темы.

 
и только по архивированию
Только я вижу это, это никогда не будет помещать онлайн в Интернете
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:19 10-12-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Только я вижу это, это никогда не будет помещать онлайн в Интернете

я про ваши огромные картинки, что вставляете в тему тут.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 10:21 10-12-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
что здесь? я про получение числа картинок. регулярка получит 1.123, к примеру, строкой. если нужно число тысяча - нужно убрать точку.  

 
запрос
Как мне удалить точку?
 
preg_replace возможно?

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:22 10-12-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
preg_replace возможно?

зачем? str_replace

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 10:23 10-12-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
зачем? str_replace

 

Код:
$pagesnum = str_replace('.', '', $pagesnum);

 
Отлично, 2 «ошибки» были исправлены
 
   
 
   
 
 
Спасибо еще раз Mavrikii
 
PS:
База данных поступает из исходного набора данных IMDB »
Затем на "postgresql", и извлечение данных с помощью PHP

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 11:03 10-12-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Регулярное выражение, которое вставляет скобку вокруг числа
 

Код:
([a-zA-Z]*)+(\d+)

 

Код:
$1($2)

 

Код:
$value = preg_replace('/([a-zA-Z]*)+(\d+)/', '$1($2)', $value);

 
это работает, но если слово, которое начинается с TT и числа, не должно быть заменено
 
Это не должно быть заменено
 

Цитата:
tt0269009

 
Это должно быть заменено
 

Цитата:
 
the exorcist 1973
troppa grazia 2018
Buio Omega (1979)
 

 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 17:06 11-12-2022 | Исправлено: zagorisback, 17:17 11-12-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
Как решить такую задачу - строка существует, если в ней только латиница, цифры, дефис и слеш?
 
Строка предварительно обработана  
$url = strtolower($url);
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 18:03 27-01-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
если в ней только латиница, цифры, дефис и слеш?


Код:
if (!preg_match("#^[a-z\d\-\\\\]+$#i", $text)) {
// ошибка валидации
}

 

Цитата:
Строка предварительно обработана

тогда без модификатора i

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 19:16 27-01-2023 | Исправлено: Mavrikii, 19:17 27-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, отлично получилось!

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 20:25 27-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть вот такой набор возможных значений
АГ АЧ АЩ АЬ ВТ ВЧ ГЕ ГС ЕИ ЕМ ЕУ ЗК ЗШ ИК ЙВ КА ЛД ЛЕ ЛМ ЛС МД МЕ МИ МС МФ МЧ МШ НВ НФ ПС ПЯ РЬ СГ СД СИ СК СС СШ СЬ СЯ ТШ УЕ УП ФВ ФЧ ФШ ЦА ЦК ЦФ ЧТ ШК ЩЗ ЩЛ ЫЗ ЫН ЫЩ ЫЯ ЬР ЬШ
Как их можно записать более компактно при помощи регулярки, чтобы при поиске можно было найти всех их, но никакие другие двухбуквенные комбинации при этом в поиске не мешались?

Всего записей: 16549 | Зарегистр. 04-11-2010 | Отправлено: 20:32 27-01-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg
выбираете с одинаковой буквой..
АГ АЧ АЩ АЬ = A[ГЧЩЬ]
ВТ ВЧ = В[ТЧ]
...
СГ СД СИ СК СС СШ СЬ СЯ = С[ГДИКСШЬЯ]
и так далее..
а после  
(A[ГЧЩЬ]|В[ТЧ]|С[ГДИКСШЬЯ]|...)

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 21:23 27-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
А всё так просто оказалось...  

Всего записей: 16549 | Зарегистр. 04-11-2010 | Отправлено: 04:15 28-01-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg
можно и иначе..

Код:
$text = "АГ АЩ";
$find = explode(" ", "АГ АЧ АЩ АЬ ВТ ВЧ ГЕ ГС ЕИ ЕМ ЕУ ЗК ЗШ ИК ЙВ КА ЛД ЛЕ ЛМ ЛС МД МЕ МИ МС МФ МЧ МШ НВ НФ ПС ПЯ РЬ СГ СД СИ СК СС СШ СЬ СЯ ТШ УЕ УП ФВ ФЧ ФШ ЦА ЦК ЦФ ЧТ ШК ЩЗ ЩЛ ЫЗ ЫН ЫЩ ЫЯ ЬР ЬШ");
$replace = array_fill(0, count($find), '');
$text2 = strtr($text, array_combine($find, $replace));
echo strlen(trim($text2));

можно без trim, зависит от задачи. если длина больше 0 - что то не заменилось.

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 07:45 28-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
если в ней только латиница, цифры, дефис и слеш?


Цитата:
if (!preg_match("#^[a-z\d\-\\\\]+$#i", $text)) {
// ошибка валидации
}

 
Что-то здесь не так. Проверяем:
 
    // Только латиница в нижнем регистре, цифры, тире и слеш
 
    $uri = "abc/-7-@!@#$%^&*()+=";
 
    if (!preg_match("#^[a-z\d\-\\\\]+$#", $uri))   echo "<br>$uri<br>Верно 1";
    else echo "<br>$uri<br>НЕ верно 1";
 
 
    $uri = "abc/-7";
 
    if (!preg_match("#^[a-z\d\-\\\\]+$#", $uri))   echo "<br>$uri<br>Верно 2";
    else echo "<br>$uri<br>НЕ верно 2";
 
Получаем вот что:
https://ibb.co/8BwXmxt

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 14:22 04-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Серьезно?
А коммент
Цитата:
// ошибка валидации

вас не смутил? То есть, если срабатывает, то неправильный URL

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 14:54 04-02-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Меня смутило, что строка  
 
"abc/-7-@!@#$%^&*()+="  
 
и строка  
 
"abc/-7"  
 
дают одинаковые результаты.
 
* * *  
Вот так сделал:
if (!preg_match("#^[-/0-9a-z]+$#", $text))
 
Вроде, работает...  
Так ведь тоже можно?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 15:17 04-02-2023 | Исправлено: Vladsvn, 17:32 04-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
дают одинаковые результаты

Ну так я писал для \ , а не /
Поэтому разница.
 

Цитата:
Так ведь тоже можно?


Цитата:
[-/\da-z]

Да

Всего записей: 15099 | Зарегистр. 20-09-2014 | Отправлено: 18:25 04-02-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru