Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2007, 23:11   #1
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
Вопрос Помогите составить рег.выражение

Нужно пропарсить страницу, в которой есть искомая строка
Код HTML:
<A href="http://example.ru/index.php?do=addnews">Пример дня</A>
Из нее выдергиваю URL. Но URL выводится не этот а выше по странице из другого якоря ( U не помогает)!
Как указать то, что не должно стоять перед словом Пример, т.е. не должно быть тэга <a> (другие тэги могут присутствовать). Не знаю как такое описать [^<a] не то!
Выкрутился тем, что перед Пример поставил : .{0,30}
Но это все-таки не очень удачная мысль на мой взгляд! Что можно здесь сделать?

PHP код:
 $text '<a href="http://example.ru/2007/06/03/avotorstvo.html"><font color="#f5f5f5">Предупреждение</font></A> | <A href="http://example.ru/index.php?do=addnews"><font color="#f5f5f5">Пример дня</font></A> | <A href="http://exampleforum.ru/" target="_blank"><font color="#f5f5f5">Форум</font></A>';
  
 
$pattern '/(?:<a)(\s+href)\s*=+[\"\' ]*((?:(?:http:\/\/www\.)|(?:http:\/\/)|(?:www\.))[\w-\d_]+(?:\.[\w-\d_]*)*\.[a-zA-Z]{2,4}(?:(?:\/[\w\d]+\.?\w*)*\/?)[?\w\d=&]*)[\"\' ]>.{0,30}\s*Пример дня.*<\/a>/i';

preg_match_all($pattern$text$arr);
echo 
$arr[2][0]; 
Спасибо! С уважением Вячеслав.
Голова человеку дадена - не токмо шапку носить!
Adamant вне форума Ответить с цитированием
Старый 25.12.2007, 10:08   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Это несложно сделать. Только объясните - что именно надо получить - текст или УРЛ?
SkyM@n вне форума Ответить с цитированием
Старый 25.12.2007, 12:53   #3
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
По умолчанию

Из регулярки же понятно, что "вырезается" ссылка и выводится в $аrray[2][0].
А вопрос у меня такой. Как в середине строки рег.выр. задать условие, что не должно быть определенного тега (<а>)?
Голова человеку дадена - не токмо шапку носить!
Adamant вне форума Ответить с цитированием
Старый 25.12.2007, 15:42   #4
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от Adamant Посмотреть сообщение
Из регулярки же понятно, что "вырезается" ссылка и выводится в $аrray[2][0].
А вопрос у меня такой. Как в середине строки рег.выр. задать условие, что не должно быть определенного тега (<а>)?
слово "вырезается" у вас что значит, а? уберается нафик или вам оно нужно для использования. А код я не смотрел ваш - так как легче самому написать.
ЗЫ. Советую поучится излагать свои мысли правильно, чтобы было доступно всем, особенно не телепатам. У вас кроме слов "вырезаю" и "выдергиваю" нет?
Ведь можно написать проще. Зачем те, кто вам может помочь должны напрягаться, чтобы понять ваш вопрос?
SkyM@n вне форума Ответить с цитированием
Старый 25.12.2007, 18:33   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Кстати... о регулярных выражениях.....
чет вот давно думаю, как составить выражение вырезающее с исходного текста ровно N символов (без учета всяких спец символов и тегов)
к примеру: <b>Исходная строка</b><img src="fdfdF">Это рисунок
если N=16
должны получить строку
<b>Исходная строка</b><img src="fdfdF">Э
вырезано точно 16 символов от исходного текста (без учета тегов)
ADSoft вне форума Ответить с цитированием
Старый 26.12.2007, 02:01   #6
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Хм.... Так.
^[.*]{16}
SkyM@n вне форума Ответить с цитированием
Старый 27.12.2007, 01:12   #7
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
По умолчанию

Из строки :
Код HTML:
<A href="http://example.ru/index.php?do=addnews">Пример дня</A>
Нужно получить URL из якоря стоящего перед фразой Пример дня. Так как в тексте могут перед этой фразой быть любые другие тэги (все кроме <a>), необходимо указать, что URL нужно скопировать именно из первого якоря перед фразой Пример дня.
Пробовал указывать "не жадничать" модификатором U. Но URL почему-то все равно берется из якоря выше по тексту. Как указать на то, что перед фразой Пример дня, и URL-ом не должно быть тэга <a>.
Голова человеку дадена - не токмо шапку носить!
Adamant вне форума Ответить с цитированием
Старый 27.12.2007, 03:40   #8
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

<a href="([^"]+)">Пример дня<\/a>
SkyM@n вне форума Ответить с цитированием
Старый 27.12.2007, 13:03   #9
Adamant
Пользователь
 
Аватар для Adamant
 
Регистрация: 20.09.2007
Сообщений: 99
По умолчанию

Спасибо за совет! Но если так все было просто, я бы не запнулся здесь. В том то и дело, что перед фразой Пример дня могут быть разные формирующие теги (а могут и не быть). И это мне и нужно указать в регулярке!
С уважением Вячеслав.
Голова человеку дадена - не токмо шапку носить!
Adamant вне форума Ответить с цитированием
Старый 27.12.2007, 14:18   #10
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

<a href="([^"]+)">.*?<\/a>
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упростить логическое выражение. Помогите с поступлением. DartMrakkk Помощь студентам 4 27.07.2008 12:35
Помогите составить формулу !!!! kutt Microsoft Office Excel 4 24.05.2008 11:44
Помогите составить программы!!! Викулька Помощь студентам 3 08.12.2007 02:18
помогите составить алгоритм. levin Помощь студентам 1 28.11.2007 14:37
помогите подобрать формулу или логическое выражение... Dr.Eric Microsoft Office Excel 7 22.11.2006 06:56