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

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



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
filarh
 
preg_match_all('~<font color=darkgray>([^<]*)<.*coord.htm\?([^z]*)z~isU',$s,$m);
 
выдаст  
в $m[1] список поинтов
в $m[2] список координат
 
    [1] => Array
        (
            [0] => Point111
            [1] => Point111
            [2] => Point111
            [3] => Point111
        )
 
    [2] => Array
        (
            [0] => lat=41.147102&lon=13.176735&
            [1] => lat=41.147102&lon=13.176735&
            [2] => lat=41.147102&lon=13.176735&
            [3] => lat=41.147102&lon=13.176735&
        )
 
дальше сам цыклом соберёшь в кучу

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 16:53 11-03-2010 | Исправлено: Mamay, 16:54 11-03-2010
filarh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mamay, спасибо! Но более подробный анализ файлов показал, что иногда есть в самом начале html-ки лишняя координата, а описания типа POINT111 без координат есть вообще везде и в больших количествах. Свести вместе описание типа POINT111 и цифры не получается (координат под 3000, а надо вытащить лишь 1000, просмотреть файлов и того больше). Попытался паттерн сделать в PowerGREP, по отдельности получается вытащить и то и другое, а вот при условии когда сначала есть описание а потом через 3 строки координата - не получается.

Всего записей: 75 | Зарегистр. 09-03-2006 | Отправлено: 14:49 12-03-2010 | Исправлено: filarh, 14:55 12-03-2010
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
filarh
тогда нужно резать на блоки и уже отдельно парсить блоки

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 17:38 13-03-2010
Delhin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
придется повториться.
 
Есть текст, необходимо из него удалить подобную конструкцию:  
"(текст содержащие англ. буквы)"  
 
 
К примеру, есть текст:  
" Этот забор поставил Sam (а также Петя), графити приндлежит нам (Dron и вася)"  
Необходимо из него сделать "Этот забор поставил Sam (а также Петя), графити приндлежит нам"
 
Насчет preg_replace('#\(.*[a-Z]+.*\)#isU', '', $text); денвер выдает следущее:
 
 preg_replace() [function.preg-replace]: Compilation failed: range out of order in character class at offset 7

Всего записей: 5 | Зарегистр. 15-09-2007 | Отправлено: 19:06 15-03-2010 | Исправлено: Delhin, 19:06 15-03-2010
Cheery



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

Цитата:
Compilation failed: range out of order in character class at offset 7  

потому что a-z

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:08 15-03-2010
Delhin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
заработало, но почему. Потомучто квалификатор i стоит?

Всего записей: 5 | Зарегистр. 15-09-2007 | Отправлено: 19:28 15-03-2010
Cheery



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

Цитата:
заработало, но почему. Потомучто квалификатор i стоит?

вам ошибка сразу сказала, что нет такого диапазона букв, который идет от маленькой a до большой Z
есть два a-z и A-Z, разница между которыми заменяется модификатором i

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:07 15-03-2010
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а диапазон a-Z хоть в какой-нибудь реализации регулярных выражений есть? я был уверен что где-то видел его, поэтому и поставил

----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 20:51 15-03-2010
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста! Нужно регулярное выражение например если в строке есть одно из значений 1 ,2 , 3 то выполнить  это, если нет то это.

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 01:18 21-03-2010 | Исправлено: usertum, 01:19 21-03-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum
[1-3]
если просто разные значения, то  
(значение1|значение2|значение3)

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

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



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if (preg_match("/[(1|2.)/",$data)) { так ?

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 11:09 21-03-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum
нет
Зачем там [?
И точка после 2
Напишите внятно какие значения вас интересуют

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 14:37 21-03-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день.
Задача нужно найти все ' />' и заменить на '>'
делаю так:

Код:
 
$postEditor = preg_replace("/ \/>/","",$_POST['editor']);
 

ввожу:

Цитата:
 
f<br />
f<br />
g<br />
g<br />
 

выводит:

Цитата:
 
\r\n f
\r\n f
\r\n g
\r\n g
 

В чем бок?

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 20:47 01-04-2010
andead



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

Код:
preg_replace('/\/>/', '>', $_POST['editor']);


----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 21:01 01-04-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день.
Помогите разобратся.
Заношу в БД такой текст:

Цитата:
<ul>
        <li>
            Отношения между людьми</li>
        <li>
 
            Размышляя над будущим</li>
 
        <li>
            Понимание себя</li>
        <li>
            Настоящая дружба</li>
        <li>
            Настоящая любовь</li>
 
        <li>
 
            Проблема выбора</li>
    </ul>
 

перед занесением прогоняю его через регулярное выражение:

Код:
$postEditor = ereg_replace(' +',' ',$postEditor);

А код как был с кучаей пробелов так и остался.
 
P.S. Это наверное табы, это играет роль?

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 00:03 14-04-2010 | Исправлено: DarkSmoke, 00:04 14-04-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke
preg_replace, зачастую, быстрее
 
preg_replace('/\s+/',' ',$postEditor)

Цитата:
Это наверное табы, это играет роль?

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

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:29 14-04-2010
Delta RuBoard



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

Код:
$a = ('text1', 'text2', 'text...');

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

----------
мой маленький блог
Создание on-line игр

Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 05:30 14-04-2010
Cheery



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

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

почему?
ну можно сделать так
(одно выражение|второе выражение|третье выражение)


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 06:25 14-04-2010
Delta RuBoard



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

Цитата:
почему?

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

----------
мой маленький блог
Создание on-line игр

Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 06:31 14-04-2010 | Исправлено: Delta RuBoard, 06:31 14-04-2010
DarkSmoke



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

Цитата:
табы - не пробелы.. так что определитесь что там у вас

Табы. Не нашел как они обозначаются.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 09:23 14-04-2010
Открыть новую тему     Написать ответ в эту тему

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