Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярка (выдернуть урл и текст)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Alibaba
Отправлено: 24 Сентября, 2011 - 13:21:56
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Есть страничка, вот кусок кода:

CODE (htmlphp):
скопировать код в буфер обмена
  1.     <div class="smallfont">
  2. <a href="link1.html" title="самый любой тайтл может включать цифры, буквы и все что угодно"><strong>Текст в стронге</strong>
  3. </a></div>


нужно выдернуть ссылку link1.html и текст в тегах strong (может включать цифры, буквы и все что угодно) что бы получилось

link1.html Текст в стронге

Буду очень благодарен
 
 Top
vixa
Отправлено: 24 Сентября, 2011 - 15:14:30
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match("/^[a-zA-Z0-9]+\.[a-zA-Z0-9]{2,5}$/",$link)
  2.  

вот тебе регулярное выражение для ссылки для текста немного по другому если не поймеш напишу

(Отредактировано автором: 24 Сентября, 2011 - 15:16:56)



-----
Vixa
 
 Top
Alibaba
Отправлено: 24 Сентября, 2011 - 15:36:15
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Спасибо, но что-то не работает.
проверял тут bl2.ru/prograng/regular.html

на конкретном примере:
CODE (html):
скопировать код в буфер обмена
  1.     <div class="smallfont">
  2. <a href="thread1728.html" title="Просмотр темы insidestructure - insistructure.com"><strong>insidestructure - insistructure.com</strong>
  3. </a></div>
 
 Top
vixa
Отправлено: 24 Сентября, 2011 - 18:06:08
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




Смотри пишется регулярка для ссылки так


считываем буквы от a до z от A до Z от 0 до 9

тоесть это будет выглядеть вот так



-----
Vixa
 
 Top
LIME
Отправлено: 25 Сентября, 2011 - 09:54:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Alibaba надеюсь пояснения будут не нужны
попробуйте сами разобраться
если поиск нужен по всему тексту с поиском всех вхождений используйте http://php.su/functions/?preg-match-all
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $text = '<div class="smallfont">
  3. <a href="link1.html" title="самый любой тайтл может включать цифры, буквы и все что угодно">
  4. <strong>Текст в стронге</strong>
  5. </a></div>';
  6. preg_match("#href=['|\"](.*?)['|\"]#i",$text,$url);
  7. preg_match("#<strong>(.*?)</strong>#i",$text,$strong);
  8. echo $url[1].'<br/>'.$strong[1];
  9. ?>

(Добавление)
текст внутри стронг можно навсякий пропустить через striptags
малоли может внутри еще теги
например
CODE (html):
скопировать код в буфер обмена
  1. <strong><i>Текст в стронге</i></strong>

(Отредактировано автором: 25 Сентября, 2011 - 10:01:33)

 
 Top
Alibaba
Отправлено: 25 Сентября, 2011 - 13:05:50
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




href=['|\"](.*?)['|\"] работает, но находит абсолютно все ссылки которые были до <div class="smallfont"> и после

а мне нужно что бы парсило только в пределах этого тега.
 
 Top
LIME
Отправлено: 25 Сентября, 2011 - 13:26:32
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




попробуйте
PHP:
скопировать код в буфер обмена
  1. preg_match("#<div class=\"smallfont\">\s<a href=['|\"](.*?)['|\"]#is",$text,$url);
  2.  
хотя тут лучше не регулярку а строковые ф-ции применить
но думаю вам быстродействие некритично

(Отредактировано автором: 25 Сентября, 2011 - 13:35:47)

 
 Top
Alibaba
Отправлено: 25 Сентября, 2011 - 13:53:04
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




так тоже пытался, но не работает.
нужно именно регуляркой сделать.
 
 Top
LIME
Отправлено: 25 Сентября, 2011 - 13:56:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Alibaba модификатор s не забыли?
что именно не получается? надо пояснять из конца в конец!!
находит больше совпадений или вообще не находит?
 
 Top
Alibaba
Отправлено: 25 Сентября, 2011 - 14:03:11
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




s не забыл. вообще ничего не находит.
 
 Top
LIME
Отправлено: 25 Сентября, 2011 - 14:09:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




вот рабочий вариант
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $text = ' j,nb ,n,l
  3. hg kjjnll\bn
  4. jhvlmjhlm\jkl\jkl<div class="smallfont">
  5. <a href=\'link1.html\' title="самый любой тайтл может включать цифры, буквы и все что угодно">
  6. <strong>Текст в стронге</strong>
  7. </a></div>';
  8. if (preg_match("#<div class=\"smallfont\">".PHP_EOL."<a href=['|\"](.*?)['|\"]#is",$text,$url))
  9.         echo $url[1].'<br/>';
  10. if (preg_match("#<strong>(.*?)</strong>#",$text,$strong))
  11.         echo $strong[1];
  12. ?>
 
 Top
Alibaba
Отправлено: 25 Сентября, 2011 - 15:07:23
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Спасибо огромное, теперь все работает.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB