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

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



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

Код:
if(!preg_match("/^[а-яА-Я\s\.]+$/", $name_univer))

Разрешаю, руский алфавит, пробел и точку. В это вырожение мне еще нужно добавить тире. Как его сделать не знаю.
ТОлько чтобы нельзя было поставить два тире подрят.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 21:12 14-06-2009
Cheery



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

Цитата:
Как его сделать не знаю.


Цитата:
[а-яА-Я\s\.\-]



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

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



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

Цитата:
[а-яА-Я\s\.\-]

Это будети сколько угодно тире подрят, а мне надо не больше одного.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 21:28 14-06-2009
Cheery



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

Цитата:
Это будети сколько угодно тире подрят, а мне надо не больше одного.

тогда переписывать регулярное выражение
а не проще сделать отдельную проверку?
просто на \-{2,}
вот это проверяет на 2 и более подряд -


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:32 14-06-2009
exhugo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста.
 
$str = "enum('apple','banana','orange')";
 
Как мне получить типы?

Всего записей: 92 | Зарегистр. 04-02-2008 | Отправлено: 19:07 18-06-2009
Cheery



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

Цитата:
Как мне получить типы?

можно и без регулярки.. explode по '
или же  
preg_match_all("/\'(.*)\'/U",$str,$matches);


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:09 18-06-2009
eternal2000



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

Код:
<a class="cat" alt="Настенно потолочный светильник MASSIVE (Бельгия) (30173 35 10)" title="Настенно потолочный светильник MASSIVE (Бельгия) (30173 35 10)" href="index.php?productID=6863">Настенно потолочный светильник MASSIVE (Бельгия) (30173 35 10)</a><br>
<a class="cat" alt="Настенно потолочный светильник MASSIVE (Бельгия) (30173 53 10)" title="Настенно потолочный светильник MASSIVE (Бельгия) (30173 53 10)" href="index.php?productID=6864">Настенно потолочный светильник MASSIVE (Бельгия) (30173 53 10)</a><br>
<a class="cat" alt="Настенно потолочный светильник MASSIVE (Бельгия) (30174 35 10)" title="Настенно потолочный светильник MASSIVE (Бельгия) (30174 35 10)" href="index.php?productID=6865">Настенно потолочный светильник MASSIVE (Бельгия) (30174 35 10)</a>

 
из него надо вытнуть ссылки и текст и забить это дело в массив
к примеру пара массивов, один содержит ссылки, а другой текст этих ссылок
подскажите как сделать эдакое

Всего записей: 185 | Зарегистр. 11-11-2007 | Отправлено: 12:25 26-06-2009
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
preg_match_all('~<.*href="([^"]*)"[^>]*>([^<]*)<~im',$s,$m);
 
Добавлено:
$urls = $m[1];
$texts = $m[2];

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

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 14:38 26-06-2009
eternal2000



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

Всего записей: 185 | Зарегистр. 11-11-2007 | Отправлено: 16:37 03-07-2009
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста как реализовать следующее.
Нужно после ввода формы разреть ссылки и картинки только на свои сайты.
 
К примеру. Есть сайты site1.ua site2.ua site3.ua. Вот все ссылки в сообщении делать активными и разрешать...
 
удаление всех ссылок и всех тегов сделал strip_tags - это просто
 
что бы не удалять свои сайты сделал типа замены str_replace (array({SITE1},{SITE1},{SITE3}), array("site1.ua","site2.ua","site3.ua"), $msg)
 
те я хочу при вводе любого урла на эти сайты
1. удалять http:// если он есть - это просто
2. заменять сайты на строки вида ,{SITE3}/url.html на <a href="http://,{SITE3}/url.html ">url.html</a> и картинки ,{SITE3}/folder/pict.jpg  на <a href="http://,{SITE3}/}/folder/pict.jpg">}/folder/pict.jpg  </a> - это тоже не сложно.
 
Столкнулся с проблемой не могу правильно распарсить строку.
 
preg_match_all("|[http://]?([site1\.ua|site3\.ua|site3\.ua])([-_a-z0-9\./]+)|Ui",$msg, $m);
 
Может кто кинет ссылку на подобный скрипт или подскажет в чем я ошибаюсь.
 
спс
 
Добавлено:
Ой. а может это правильней сделать через preg_replace?
 
Добавлено:
подскажите пожалуйста, почему вот так работает  
preg_replace("|[http://]*site1\.ua([-_a-z0-9\./]+)|im", "[a href={site1}$1]$1[/a]",$msg);
 
а так нет
preg_replace("|[http://]?site1\.ua([-_a-z0-9\./]+)|im", "[a href={site1}$1]$1[/a]",$msg);
 
Второе ведь правильней.

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 09:26 25-07-2009 | Исправлено: Mira, 09:32 25-07-2009
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте.
Подскажите пожалуйста, имеем ссылку вида
< a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>.
Необходимо вывести все название с их ID'шками.
Notebook Acer - 363809
Текст находится в переменной $html
Буду безмерно благодарен за РНРшный скрипт.

Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 20:32 25-07-2009
Cheery



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

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

потому что ? и * - не одно и то же.
 
ForposT_ForeveR
ну посмотрели бы ранее - куча аналогичных примеров. даже почти думать не надо

Код:
$str='< a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" id="test"> Notebook Acer</a>';
preg_match('/<\s+a.*id=(\'|")(.*)\\1.*>(.*)<\/a>/iU',$str,$matches);
print_r($matches);


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:50 25-07-2009
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
 
Спасибо.
 
Хотелось бы через preg_match_all
И второе, чтобы он парсил product_id

Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 00:25 26-07-2009
Cheery



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

Цитата:
Хотелось бы через preg_match_all  

и? то, что вы используете другую функцию не меняет регулярку
 

Цитата:
И второе, чтобы он парсил product_id

а сразу об этом сказать - религия не позволяет?  
добавить product_id=(\d+)

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:36 26-07-2009
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Прошу прощения, нечётко объяснил.
Есть ссылки такого ввида:
<a href="/products.php?product_id=363809#product_363809" title="Notebook Acer" и тут ещё куча всего> Notebook Acer</a>
 
Надо получить значения product_id и title(либо, то что заключено между <a>это значение</a>, потому как они одинаковые).
 
Спасибо

Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 01:04 26-07-2009 | Исправлено: ForposT_ForeveR, 01:28 26-07-2009
Crocell

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ForposT_ForeveR
так пойдет?
<a .+?\?product_id=(\d+)#.+?>(.+?)</a>
 
з.ы. сорри за оффтоп, но тут что, все подбирают регулярки методом проб и ошибок? Есть например, прекрасная визуальная тулза, которую можно установить как air-приложение.

Всего записей: 329 | Зарегистр. 12-05-2007 | Отправлено: 04:22 26-07-2009
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Crocell
Пробовал ругается, на символ '('.
Напишите пожалуйста, полный код.
Спасибо.

Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 07:43 26-07-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ForposT_ForeveR
покажите как использовали
И точное сообщение об ошибке

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 08:47 26-07-2009 | Исправлено: Cheery, 08:47 26-07-2009
DreamKatcher

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke
столкнулся с подобной же проблемой, нужно было запрещать все символы, кроме одиночного тире и одной точки, ну и алфавита с цифрами. Решил вот таким образом на PHP:
 
$arr_replace=array ('/[^0-9а-яa-z\-\s\.]/i',
                    '/\-{2,}/',
                    '/\.{2,}/');  
$query=preg_replace($arr_replace,"",$_GET['query'])
 
Теперь было бы удобно удалять все знаки "!", кроме одиночного "!" в начале слова, '/\<\!{1}/' - не срабатывает.

Всего записей: 25 | Зарегистр. 22-09-2007 | Отправлено: 11:14 01-08-2009
vegaweb



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Help please
есть строка с N  количеством текста, в том числе теги.  
задача - выдрать из строки такого вида

Код:
<a href="page.php?var=(4516)">(text)</a>

следующее (таких строк много, и следующий кусок всегда разный).  
 

Код:
(text)

 
заранее thnx
 
Добавлено:
в скобках - изменяющийся текст
 
Добавлено:
в принципе посмотрев на верхние примеры с горем пополам сляпал что то, что выводит нужную строку

Код:
preg_match('/<\s+a.* href="page.php.*">(.*)<\/a>/iU',$str,$matches);  

вопрос встал в другом, как эти результаты загнать в цикл..
Спасибо
 
Добавлено:
ответ найден, спасибо
вместо preg_match надо юзать preg_match_all ))

Всего записей: 107 | Зарегистр. 13-03-2009 | Отправлено: 17:33 04-08-2009
Открыть новую тему     Написать ответ в эту тему

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