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

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



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

Код:
 
$s = 'http://site.ru/dir/dir2/index.html';
 
    if ( preg_match("'^((http://.+?/.+?/).+?/)index\.html$'", $s, $match_arr) ) {
 
      $dir = $match_arr[2];     // будет httр://site.ru/dir/
      $dir2 = $match_arr[1];   // будет httр://site.ru/dir/dir2/
 
      echo "$dir<br>$dir2";
    }
 

 
Добавлено:
Rendom

Код:
 
$s = "<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>";
 
    $s = preg_replace("'(<table.+?)<table.+?UNIQTEXT.+?</table>(.+$)'s", "$1$2", $s);
 
    echo $s;
 

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 12:12 23-06-2014 | Исправлено: Vitus_Bering, 12:35 23-06-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, помогите сделать простой поиск текста на совпадение....
Пробовал, но результат не самый лучший((
 

Код:
$text = "text1|text2|text3|text4|text5";
if(preg_match("/^([$text])$/i", $buffeRr))
retrun false;

 
нужно выдать false если текст найден в $buffeRr

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 15:24 25-10-2014
Mavrikii

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

Цитата:
([$text])

квадратные то скобки зачем?
ну и читать что возвращает функция

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 22:13 25-10-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как можно получить ip (127.0.0.1) с помощью регулярных выражений с таких строк?
 
127.1.1.1, 127.0.0.1, 121.0.0.0
127.0.0.1, 121.0.0.0
 
т.е. нужно получить строку 127.0.0.1 и текста перед последней запятой

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:28 25-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
зачем тут регулярка??
$tmp = explode(',', $var);
и взять первый элемент массива
 
ps: как вы вообще сайты делаете, если на таком уровне мыслите.

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 20:38 25-11-2014 | Исправлено: Mavrikii, 20:38 25-11-2014
Sutar



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

Цитата:
как вы вообще сайты делаете, если на таком уровне мыслите.

да легко)
 

Цитата:
зачем тут регулярка??  

если брать первый елемент в первом примере будет правильно. а в втором, уже не то возьму....
 
может брать елемент с номером count($tmp)-1 ??

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:41 25-11-2014
Mavrikii

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

Цитата:
может брать елемент с номером count($tmp)-1 ??

тогда уж -2, но проверив сначала количество элементов в массиве. вдруг там один вообще.
 

Цитата:
да легко)

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

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 20:46 25-11-2014 | Исправлено: Mavrikii, 20:47 25-11-2014
Vitus_Bering



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

Код:
 
if ( preg_match("'^.*(127\.0\.0\.1)\,.*$'", $s, $match_arr) ) {
  $result = $match_arr[1];
}

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 22:33 25-11-2014
Mavrikii

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

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 22:34 25-11-2014
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Набираешь посты, делая пустые замечания.

Цитата:
перечитайте внимательно о чем вообще шла речь.

Об этом и речь:

Код:
Если
$s = '127.1.1.1, 127.0.0.1, 121.0.0.0'
 или, например,
$s = '127.1.1.1, 127.8.9.10, 127.18.9.21, 127.0.0.1, 127.80.5.60, 121.0.0.0, 127.11.7.15'
 
if ( preg_match("'^.*(127\.0\.0\.1)\,.*$'", $s, $match_arr) ) {  
  $result = $match_arr[1];  
}
то $result вернёт 127.0.0.1

explode не катит, если не известно какой по порядку будет 127.0.0.1 в строке.

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 08:28 26-11-2014 | Исправлено: Vitus_Bering, 08:30 26-11-2014
Mavrikii

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

Цитата:
Набираешь посты, делая пустые замечания

не смешите мои тапочки
 

Цитата:
не катит, если не известно какой по порядку будет 127.0.0.1 в строке.

он не ищет 127.0.0.1, он ищет второй IP с "конца", а IP софтой заглушки привел просто для примера.
 
будет более очевидно из этой темы накрутка голосов на сайте
 
какой смысл вообще в
Цитата:
if ( preg_match("'^.*(127\.0\.0\.1)\,.*$'", $s, $match_arr) ) {  
  $result = $match_arr[1];  

если вы и так "ищете" 127.0.0.1, который можно найти обычным strpos?? и даже с запятой, чтобы он не был последним.
 
уж где, где, а в регулярках я собаку съел.
 

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 09:03 26-11-2014 | Исправлено: Mavrikii, 09:05 26-11-2014
Vitus_Bering



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

Цитата:
который можно найти обычным strpos

Какой вопрос

Цитата:
как можно получить ip (127.0.0.1) с помощью регулярных выражений с таких строк?

такой и ответ.
 

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 14:24 26-11-2014
Sutar



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

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 14:21 30-11-2014
AZJIO



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

Всего записей: 4559 | Зарегистр. 03-05-2006 | Отправлено: 03:51 09-12-2014 | Исправлено: AZJIO, 12:38 09-12-2014
ivanmara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день уважаемые спецы. Подскажите как составить регулярки для  пары предложений.
 
1. Внутри html-ки есть тег:
 
<input type=hidden name=checkid value="96812124">
 
Необходимо вытащить: 96812124
 
2. Еще тэг в другой html-ке:
 
<input type=hidden name="rnd" value="19082">
 
Необходимо вытащить: 19082
 
3. ну этот тег в 3-м файле я уже попробую сделать самостоятельно:
 
<input type=hidden name="checkid" value="113658085">
 
Необходимо вытащить: 113658085
 
Заранее благодарен.

Всего записей: 538 | Зарегистр. 23-06-2006 | Отправлено: 10:24 23-12-2014
Vitus_Bering



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

Код:
 
if ( preg_match("'<input type=hidden.+?value=\"(\d+)\">'", $s, $match_arr) ) {
      $result = $match_arr[1];
}
 

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 10:48 23-12-2014 | Исправлено: Vitus_Bering, 10:50 23-12-2014
ivanmara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering
 
Спасибо за ответ. Но все value меняются при каждом вызове странички. Мне как раз нужно получать это динамическое значение. Как бы это сделать получить значение между кавычками ... ?

Всего записей: 538 | Зарегистр. 23-06-2006 | Отправлено: 13:45 23-12-2014 | Исправлено: ivanmara, 13:50 23-12-2014
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ivanmara
 
$result возвращает значение между кавычками

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 15:10 23-12-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ivanmara
такие вещи лучше не делать регулярками а парсерами DOM структуры  
 
Vitus_Bering
а если там не один hidden элемент? неплохо бы еще и условие для имени добавить.

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 21:01 23-12-2014 | Исправлено: Mavrikii, 21:01 23-12-2014
ivanmara



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

Всего записей: 538 | Зарегистр. 23-06-2006 | Отправлено: 00:20 24-12-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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