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

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



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
протестируйте ))  
возьмите алфавит в строку и сделайте из него выборку с помощью регулярного выражения.. тех символов, что не входят в период
то есть, к примеру
#[^а-я]#i
так и увидите, что не входит

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:38 05-03-2013
Sutar



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

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 01:43 05-03-2013 | Исправлено: Sutar, 01:46 05-03-2013
Cheery



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

Цитата:
Добавил пробел в строчку, и результат false

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

Код:
$text = "йцукенг шщзхїфівапролджєячсмитьбю";
preg_match_all('#[^а-я\s]#u', $text, $m);
header('Content-Type: text/html; charset=UTF-8');
var_dump($m);

результат

Цитата:
 
array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(2) "ї"
    [1]=>
    string(2) "і"
    [2]=>
    string(2) "є"
  }
}


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:49 05-03-2013
vof4ikWP

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Задача следующая, что-то я застрял...
Необходимо проверить php код на наличие html вставок.
Например у меня есть такая строка.

Код:
$a = '<b>text</b>';

Я могу получить <b>text</b> (T_STRING) и дальше обрабатывать регуляркой.  
Но есть одно но.

Код:
$response .= "\t</database>\n";
$response .= "</response>\n";
$response .= "<response>\n";

Мне нельзя обрабатывать вышеприведённые строки, потому что они используется для аякс запросов.  
У кого какие мысли?
Спасибо.
 

Всего записей: 5 | Зарегистр. 21-06-2012 | Отправлено: 21:07 06-03-2013 | Исправлено: vof4ikWP, 21:07 06-03-2013
Cheery



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

Цитата:
У кого какие мысли?  

получаете все теги и их содержимое, а потом проверяете, что тег не находится в массиве разрешенных

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:09 06-03-2013
vof4ikWP

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всего лишь 91 тег в 4 html, действительно проще сделать так. Спасибо

Всего записей: 5 | Зарегистр. 21-06-2012 | Отправлено: 23:12 06-03-2013
AftarJjet



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Реально ли создать такое выражение, чтобы удалить, например, майлы такого вида - vnxvnxvnds4345ssfs@gmail.com, а такого - hornioh@gmail.com оставить?
Т.е., удалить записи, которые созданы явно искусственно? Может, есть где-то теоретические наработки?
 
Добавлено:
Хотя, это невозможно, я так понимаю. Нужен огромный словарь, лексический и морфологический разбор, и т.д.

Всего записей: 1829 | Зарегистр. 11-01-2009 | Отправлено: 06:45 05-04-2013
Cheery



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

Цитата:
Нужен огромный словарь, лексический и морфологический разбор

именно. регулярки тут уже не при чем.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 06:54 05-04-2013
zondex

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте!
 
Дано: HTML код(таблица), ниже содержимое одной из строк таблицы:
 
<tr><td bgcolor=#ffffff><font class=nickname>8. <b>Название предмета</b> <font class=weaponch>(Доп.Инфо)</font> <b><font color=#BB0000>999</font></b></td><td bgcolor=#ffffff><div align=center><font class=weaponch><b>test</div></td><td bgcolor=#ffffff><div align=center><font class=weaponch><b>Производительность:</b> 450/450</div></td><td bgcolor=#ffffff><div align=center><font class=weaponch><b><font color=#00A80C>открыт</font></div></td><td bgcolor=#ffffff><div align=center><input type=button class=invbut onclick="location='main.php?get_id=1&uid=44016042&wmas=8&nick=test&code=fa16fa393f91418fcccb2865459d32f7&useaction=clan-action&addid=3'" value="Взять предмет"></div></td></tr>
 
Необходимо: с помощью регулярного выражения, путем подстановки числового выражения в переменную uid находить в таблице необходимую строку.
 
Что смог накодить:
<pre>
<?
 
$res = file_get_contents('01.txt');
$a="44898330";
$item = explode("\n", $a);
 
while( count($item) > 0)
{
  $get_item = array_pop($item);
  if(preg_match_all("#\d+\. <b>(.+)</b>.+<input type=button class=invbut onclick=\"(.+uid={$get_item}&wmas=\d+&nick=.+&vcode=[a-z0-9]{32}&useaction=clan-action&addid=3)'#U", $res, $object))
  $object[0]='';
  print_r($object);
}
 
?>
 
Исходник и файл с таблицей:
http://upwap.ru/3099614

Всего записей: 22 | Зарегистр. 20-04-2010 | Отправлено: 20:52 03-05-2013
Grafus



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

Код:
 
name="1"
name="2"
name="3"
name="4"
name="5"
name="6"
name="7"
 

Из него нужно сделать:
id="1" logo="1"
id="2" logo="2"
id="3" logo="3"
id="4" logo="4"
id="5" logo="5"
id="6" logo="6"
id="7" logo="7"
[/code]
Юзаю так:

Код:
 
$test= preg_replace ('!name="(.+?)"!isU', 'id="$1" logo="$1"', $test);
 

Так ета зараза меняет только первый name на id, не добавляя logo, и не обрабатывая последующие строки.
Что я делаю не так?

Всего записей: 389 | Зарегистр. 15-12-2004 | Отправлено: 19:35 07-05-2013
Cheery



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

Код:
preg_replace('!name="(\d+)"!is', 'id="$1" logo="$1"', $test)

или

Код:
preg_replace('!name="(.+)"!isU', 'id="$1" logo="$1"', $test);  

 
иначе, комбинируя ? и U - вы делаете запрос жадным
 
zondex

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

часть ссылки или весь tr?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:41 07-05-2013 | Исправлено: Cheery, 19:45 07-05-2013
Grafus



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

Всего записей: 389 | Зарегистр. 15-12-2004 | Отправлено: 20:37 07-05-2013
Grafus



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А у меня вот назрел очередной вопросик.
Есть переменная $txt с текстом вида:

Код:
 
STAT: 0, Text 1
Description
STAT: 0, Text 1
Description
STAT: 0, Text 2
Description
STAT: 0, Text 3
Description
STAT: 0, Text 4
Description
STAT: 0, Text 5
Description
...
 

Как в током примере все ноли заменить на порядковые номера? Чтобы получилось так:

Код:
 
STAT: 1, Text 1
Description
STAT: 2, Text 1
Description
STAT: 3, Text 2
Description
STAT: 4, Text 3
Description
STAT: 5, Text 4
Description
STAT: 6, Text 5
Description
...
 

Пособите плз.

Всего записей: 389 | Зарегистр. 15-12-2004 | Отправлено: 09:39 19-05-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grafus
preg_replace_callback('/(STAT: )(\d+)/', function($v){static $c = 0; return $v[1] . (++$c);}, $txt);


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:52 19-05-2013
Grafus



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
А как реализовать, так что бы отсчет шел не 1,2,3,4,5,...,11,12,13,14,15,... , а 01,02,03,04,05,...,11,12,13,14,15,... ?

Всего записей: 389 | Зарегистр. 15-12-2004 | Отправлено: 15:30 19-05-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Grafus
http://php.net/manual/en/function.str-pad.php

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:19 19-05-2013
NORIO



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо вернуть вхождение после которого как можно меньше символов до конца строки,
то есть найти и вернуть повторяющийся кусок текста находящийся последним в строке
 

Код:
<php?
 
$string = '<img id="image_bakregistr_hanger" src="images/bakregistr/left_reg_h.png" style="position: absolute; top: 308px; left: 117px; z-index: 59; -webkit-transform: skewY(2deg); transform: skewY(4deg);">';
 
preg_match("/skewY\(\ddeg\).*?$/i" , $string, $result);
 
echo $result[0];
 
?>

 
выдаёт
 

Цитата:
skewY(2deg); transform: skewY(4deg);">

 
а нужно получить
Цитата:
skewY(4deg);">

Как?
 
нежадный квантификатор не помог .*?
 
Заранее ,спасибо.

Всего записей: 875 | Зарегистр. 18-12-2004 | Отправлено: 15:43 31-05-2013
Cheery



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

Код:
$string = '<img id="image_bakregistr_hanger" src="images/bakregistr/left_reg_h.png" style="position: absolute; top: 308px; left: 117px; z-index: 59; -webkit-transform: skewY(2deg); transform: skewY(4deg);">';  
 
preg_match("/skewY\(\ddeg\)((?!skewY).)*$/Ui" , $string, $result);  
 
var_dump($result);  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:39 31-05-2013
n0byk



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нужно дописать регулярку что-бы разбирать ссылки подобного рода  
 
youtube.com/watch?v=Uhol3aK8kEQ&list=SPJuzssrVaWjbIpmb36XabFUkiowJQQ9DH
youtube.com/watch?feature=player_embedded&v=Uhol3aK8kEQ
 
 
 

Код:
 
 
//youtube.com/watch?v=Uhol3aK8kEQ&list=SPJuzssrVaWjbIpmb36XabFUkiowJQQ9DH
//youtube.com/watch?feature=player_embedded&v=Uhol3aK8kEQ
$pattern =  
        '%^# Match any YouTube URL
        (?:https?://)?  # Optional scheme. Either http or https
        (?:www\.)?      # Optional www subdomain
        (?:             # Group host alternatives
          youtu\.be/    # Either youtu.be,
        | youtube\.com  # or youtube.com
          (?:           # Group path alternatives
            /embed/     # Either /embed/
      | /v/         # or /v/
          | /watch\?v=  # or /watch\?v=
      | /watch?feature=player_embedded&\?v=  # ?????????????????????????
          )             # End path alternatives.
        )               # End host alternatives.
        ([\w-]{10,12})  # Allow 10-12 for 11 char YouTube id.
        $%x'
        ;
$result = preg_match($pattern, $url, $matches);    
 
 

 
С последней ссылкой сделал по аналогии, но не работает, подскажите ка исправить

Всего записей: 79 | Зарегистр. 26-08-2009 | Отправлено: 20:25 03-06-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
n0byk
разбирать на что ? вам нужен только v=?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:35 03-06-2013
Открыть новую тему     Написать ответ в эту тему

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