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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
zagorisback



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

Цитата:
<a[^]+websiteLink[^>]+>(.*)<\/a>

 
это не работает
 
   
 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 22:50 30-03-2023
Mavrikii

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

Цитата:
это не работает

потому что небольшая опечатка, очевидно же. можно было догадаться.
<a[^>]+websiteLink[^>]+>(.*)<\/a>

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 22:52 30-03-2023
zagorisback



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

Mavrikii
 

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

 
Эта
 

Цитата:
[^>]

 
Я добавил параметр «U» (ленивый), теперь он работает отлично
 
Спасибо
 

Код:
#<a[^>]+websiteLink[^>]+>(.*)<\/a>#U

 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:44 31-03-2023
zagorisback



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

как мне получить весь этот кусок кода?
 
от  
 
<section class="model-detail-websites">
 
заканчивается на  
</section>
 
 

Код:
 
<section class="model-detail-websites">
                    <header>Websites</header>
            <ul class="websites-list">
        <li>
                <a href="/out/domain" target="_blank"><span style="color:#9d7f90;">google</span></a> <span style="color:#3cb371;">Monica Bellucci</span> <span style="color:#0066CC;">Actres</span>
        </li>
        </ul>        </section>
 
 


Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 11:18 26-04-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
так же, как и в любой другой ситуации
#<section class="model-detail-websites">(.*)</section>#s

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 11:25 26-04-2023
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
исправлено с префиксом «U», потому что он извлекал весь текст, есть и другие подобные теги
 

Код:
#<section class="model-detail-websites">(.*)</section>%sU#

 
Спасибо
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 11:49 26-04-2023
zagorisback



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

 

Цитата:
60 - (58 episodes)

 
Как взять только первое число?
В этом случае 60

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 11:58 11-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
preg_match возьмет только первое совпадение
просто (\d+)
 
можно explode по - и после trim для нулевого элемента

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 12:21 11-05-2023 | Исправлено: Mavrikii, 12:22 11-05-2023
zagorisback



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

Цитата:
122 -
132 - (director's cut)

 
Так что только первые цифры
 
122
132
 

Цитата:
60 - (58 episodes)  

 
60

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
проще всего прямо
(\d+)\s-
если пробела с - не будет в скобках.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 13:21 11-05-2023 | Исправлено: Mavrikii, 13:21 11-05-2023
zagorisback



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

Mavrikii
 

Цитата:
(\d+)\s-

 
это не работает Пусто
 

Код:
preg_match_all('/(\d+)\s-/', $row->duration, $resultime, PREG_PATTERN_ORDER);
      $resultime = $resultime[0];

 
 
 
   
 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 15:40 11-05-2023
Mavrikii

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

Цитата:
Пусто

Значит там другой текст. Судя по картинке, там вообще html с bold тегами.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 18:50 11-05-2023
zagorisback



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

Цитата:
Значит там другой текст. Судя по картинке, там вообще html с bold тегами.  

 
из базы данных (формат varchar)
 
   
 
Html
 

Код:
<p class="biodata">122<b> - </b> <br> 132<b> - (director's cut)</b></p>
 

 
 
из базы данных (формат varchar)
 
   
 
 
Html
 

Код:
 
<p class="biodata">60<b> - (58 episodes)</b></p>>
 

 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 19:15 11-05-2023 | Исправлено: zagorisback, 19:16 11-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
Ну так регулярка работает с текстом не убирая html.
Конечно не будет тогда работать, нужно очистить от html.
И в базе уже раздельно же, зачем тут что то доставать регулярным выраажением?

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 19:19 11-05-2023
zagorisback



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

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

 
 
Что я хочу получить, и преобразовать текст varchar (time) за часы, минуты (у меня уже есть код)
Но нужны только первые цифры

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 20:07 11-05-2023 | Исправлено: zagorisback, 20:07 11-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
#<p class="biodata">(\d+)<b>#
 

Цитата:
и преобразовать текст varchar (time) за часы, минуты  

может определитесь, блин, в каком формате у вас данные? либо внутри html кода, либо в varchar ячейки в таблице - одни цифры. зачем тогда вообще регулярка? как же сложно с вами общаться.
 
если в varchar, то ничего делать не нужно, по сути - $value = intval($colname);

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 20:11 11-05-2023 | Исправлено: Mavrikii, 20:18 11-05-2023
zagorisback



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

Цитата:
может определитесь, блин, в каком формате у вас данные?

 
я написал выше, в каком формате они
поле time = varchar

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

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

Цитата:
я написал выше, в каком формате они
поле time = varchar

ну, в нем, судя по картинке, сидит просто 60? в чем сложность то??
$time = intval(поле_time);
зачем тут регулярное выражение?

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 21:25 11-05-2023 | Исправлено: Mavrikii, 21:25 11-05-2023
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проблема и это
Я использовал запрос, чтобы сгруппировать поле <time> и <addition>
 
 

Код:
array_to_string( ARRAY_AGG ( DISTINCT runningtimes.time || '<b> - ' || COALESCE ( runningtimes.addition, 'missing' ) || '</b>' ), ' <br> ' ) AS duration,

 
Таким образом, вам нужна «regex», чтобы извлечь данные поля <time>

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 23:56 11-05-2023 | Исправлено: zagorisback, 23:56 11-05-2023
Mavrikii

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

Цитата:
Я использовал запрос, чтобы сгруппировать поле <time> и <addition>

ну так не группируйте таким образом, зачем??
соедините через любой разделитель, по которому потом разделите через explode.
 
а еще лучше - воспользоваться MySQL функцией JSON_ARRAYAGG

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 00:06 12-05-2023 | Исправлено: Mavrikii, 00:07 12-05-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