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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добрый вечер  
помогите, пожалуйста, с регулярными выражениями  
есть очень большой файл  
в котором есть повторения не строк, а подстрок  
например,  
 
domain.ru  
domain.ru/1  
domain.ru/2  
domain.ru/3
www.domain2.ru
www.domain2.ru/1  
 
мне нужно оставить только domain.ru и www.domain2.ru, остальные строки нужно удалить

Всего записей: 290 | Зарегистр. 18-12-2005 | Отправлено: 19:18 25-06-2010
Mamay



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

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

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 14:44 27-06-2010
sancher

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

Код:
domain.ru  
domain.ru/1  
domain.ru/2  
domain.ru/3  
www.domain2.ru  
www.domain2.ru/1  

 
в файл
на выходе надо получить
 

Код:
domain.ru
www.domain2.ru
 

 
т.е. мне нужно удалить строки, в которых появляется / (слеш)
но в идеале, если есть строки вида

Код:
 
domain.ru/1  
domain.ru/2
 

надо оставить domain.ru
т.е. если нету domain.ru без слеша, то нужно
взять domain.ru/1 и удалить /1
 
Итог:
 

Код:
domain.ru  
domain.ru/1  
domain.ru/2  
domain.ru/3  
www.domain2.ru  
www.domain2.ru/1  
domain3.ru/1  
domain3.ru/2
 

 
на выходе
 

Код:
domain.ru
www.domain2.ru
domain3.ru
 

Всего записей: 290 | Зарегистр. 18-12-2005 | Отправлено: 23:36 01-07-2010 | Исправлено: sancher, 23:41 01-07-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sancher
используете простую регулярку на имя домена..
загоняете результаты в массив, потом применяете функцию array_unique
можно со strtolower, чтобы регистр не мешал
регулярка вида..
^(.*?)/?$

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:27 02-07-2010 | Исправлено: Cheery, 00:28 02-07-2010
Hanut

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sancher
Думаю такой вариант может помочь выбрать домен.

Код:
/^([^/]+)/

Всего записей: 5 | Зарегистр. 02-07-2010 | Отправлено: 00:57 02-07-2010
sancher

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

Код:
^(.*?)/?$

и

Код:
/^([^/]+)/

в notepad++
но он пишет, что ни одно совпадение не найдено
может подскажите другую программу?
как воспользоваться вашими советами?
только не судите строго =)

Всего записей: 290 | Зарегистр. 18-12-2005 | Отправлено: 20:44 02-07-2010 | Исправлено: sancher, 20:45 02-07-2010
Cheery



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

Цитата:
в notepad++  
но он пишет, что ни одно совпадение не найдено  

при чем тут notepad? вы регулярное выражение для php спрашиваете? вот в нем и применяйте.


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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
я спрашиваю, как можно решить мою задачу,
используя регулярные выражения
написал в эту тему, но php я не знаю =(

Всего записей: 290 | Зарегистр. 18-12-2005 | Отправлено: 21:36 02-07-2010
Cheery



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

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

вам и сказали - просто регуляркой нельзя..  
если знаете какой то язык, то и спрашивайте в теме по данному языку.

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:42 02-07-2010
sancher

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
изучал C и JAVA
но не практикуюсь
поэтому сейчас не готов написать программу для моей задачи
жаль, что нельзя обойтись регулярными выражениями

Всего записей: 290 | Зарегистр. 18-12-2005 | Отправлено: 22:08 02-07-2010
Cheery



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

Код:
<?php
$data=file('файл_с_данными.txt');
$domains=array();
foreach($data as $line)
{
if(preg_match('/^([^\/]+)/',trim($line),$matches))
  $domains[]=$matches[0];
}
$domains=array_unique($domains);
file_put_contents('сохранить_результат_в_файл.txt',implode("\r\n",$domains));
?>


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:27 02-07-2010
sancher

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, спасибо тебе за помощь!
скачал php-5.3.2-nts-Win32-VC9-x86.msi
установил
скопировал твой скрипт в C:\1.php (написал 1.txt вместо файл_с_данными.txt и 2.txt
вместо сохранить_результат_в_файл.txt)
создал C:\1.txt со списком доменов
запустил cmd
написал php.exe C:\1.php
но файл 2.txt не появился =(
где мой косяк?

Всего записей: 290 | Зарегистр. 18-12-2005 | Отправлено: 22:44 02-07-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sancher
php.exe -f C:\1.php

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:59 02-07-2010
sancher

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

Код:
php.exe -f C:\1.php

не помог
оказывается надо было полный путь вводить (C:\1.txt и C:\2.txt)
а я надеялся на относительный
скрипт отлично работает
на досуге изучу азы PHP, чувствую мощь =)

Всего записей: 290 | Зарегистр. 18-12-2005 | Отправлено: 23:17 02-07-2010
UoRlAk



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

Код:
 
<td class="t t28"><span title="Погода сейчас">+27 °C</span><b><i class="b-icon b-icon_term"><i></i></i></b></td>
<td><i class="b-wea-icon g-png"><img alt="" src="//i.yandex.st/weather/i/icons/n10.png"></i></td>
 

 
сэтой строчки  

Код:
 
<td><i class="b-wea-icon g-png"><img alt="" src="//i.yandex.st/weather/i/icons/n10.png"></i></td>
 

 
нужно вытянуть изображение в таком виде n10.png и присвоеть его переменой для вставки в шаблон (вид картинок бывает разный и n10.png и 10.png и n1.png и так далее)
 
ранее это делалося вот так:
 

Код:
 
$kartinka=preg_replace("#(.+)(1|n)(\d+)\.png(.+)#i","\\2\\3.png",$contents);
 

 
а потом это вот так выводится

Код:
 
<tr><td height="20">В небе: </td><td><img align="left" src="http://img.yandex.net/i/{$kartinka}"> </td></tr>
 

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

Всего записей: 99 | Зарегистр. 27-12-2007 | Отправлено: 17:27 06-07-2010 | Исправлено: UoRlAk, 18:01 06-07-2010
Cheery



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

Код:
<?php
  $text=<<<END
<td class="t t28"><span title="Погода сейчас">+27 °C</span><b><i class="b-icon b-icon_term"><i></i></i></b></td>  
<td><i class="b-wea-icon g-png"><img alt="" src="//i.yandex.st/weather/i/icons/n10.png"></i></td>  
END;
$kartinka=preg_match("#weather/i/icons/(.*?)\"#i",$text,$matches);  
print_r($matches);
?>


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:10 06-07-2010
UoRlAk



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

Всего записей: 99 | Зарегистр. 27-12-2007 | Отправлено: 21:18 06-07-2010 | Исправлено: UoRlAk, 21:55 06-07-2010
Cheery



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

Цитата:
к сожелению не работает....  

все работает - смотрите $matches массив и берите из него название файла

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:23 06-07-2010
UoRlAk



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

Всего записей: 99 | Зарегистр. 27-12-2007 | Отправлено: 21:47 06-07-2010 | Исправлено: UoRlAk, 00:19 07-07-2010
Cheery



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

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

и? голова совсем не работает????
preg_match("#weather/i/icons/(.*?)\"#i",$text,$matches);
$kartinka=$matches[1];
и все..

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:02 06-07-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