HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Помогите с регулярный выражением на PHP
  #1  
Старый 01.09.2009, 03:06
UnOuter
Новичок
Регистрация: 24.07.2009
Сообщений: 5
С нами: 8841715

Репутация: 0
По умолчанию Помогите с регулярный выражением на PHP

Здравствуйте, уважаемые программисты.

Помогите составить регулярку на PHP для такого:

имеем
Код:
<b>Линки</b></a><hr><a href="\http://site.ru/id.php?key=523169210347762514824620110374859\" class="\&quot;takru\&quot;" target="\&quot;_top\&quot;" onclick='\"javascript:' rnd(this);\="">
в итоге должны получить

Код:
http://site.ru/id.php?key=523169210347762514824620110374859

В общем извлечь ссылку из текста
 
Ответить с цитированием

  #2  
Старый 01.09.2009, 03:26
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

PHP код:
<pre>
<?php
$a 
= <<<HTML
<b>Линки</b></a><hr><a href="\http://site.ru/id.php?key=523169210347762514824620110374859\" class="\&quot;takru\&quot;" target="\&quot;_top\&quot;" onclick='\"javascript:' rnd(this);\="">
"
HTML;
preg_match_all('|<b>Линки</b></a><hr><a href="\\\(.*)\\\" class="|',$a,$res);
print_r ($res[1]);
?>
</pre>

Последний раз редактировалось Pashkela; 01.09.2009 в 04:15..
 
Ответить с цитированием

  #3  
Старый 01.09.2009, 21:24
UnOuter
Новичок
Регистрация: 24.07.2009
Сообщений: 5
С нами: 8841715

Репутация: 0
По умолчанию

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

Спасибо.
 
Ответить с цитированием

  #4  
Старый 01.09.2009, 21:53
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

оставь тогда внутри регулярки только

<a href="\\\(.*)\\\

и всё

< ahref ведь не поменяется? А вообще, прежде чем спрашивать, надо давать сразу все возможные варианты, а не только одну строчку, по идее
 
Ответить с цитированием

  #5  
Старый 01.09.2009, 23:01
eLWAux
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
С нами: 9423746

Репутация: 2399


По умолчанию

Цитата:
Сообщение от Pashkela  
оставь тогда внутри регулярки только

<a href="\\\(.*)\\\

и всё

< ahref ведь не поменяется? А вообще, прежде чем спрашивать, надо давать сразу все возможные варианты, а не только одну строчку, по идее
сосайтнек, а что если будет <a target="_blank" href="http://google.com">.. ? даже если когда будет hREf , тоже не будет результата.
зачем такую "строгую" регулярку делать? будь попроще и делай более универсальные..

UnOuter:
/<a.+?href="(.+?)"/is
 
Ответить с цитированием

  #6  
Старый 02.09.2009, 21:51
UnOuter
Новичок
Регистрация: 24.07.2009
Сообщений: 5
С нами: 8841715

Репутация: 0
По умолчанию

Цитата:
Сообщение от eLWAux  
сосайтнек, а что если будет <a target="_blank" href="http://google.com">.. ? даже если когда будет hREf , тоже не будет результата.
зачем такую "строгую" регулярку делать? будь попроще и делай более универсальные..

UnOuter:
/<a.+?href="(.+?)"/is

Вставил сюда

preg_match_all ("/<a.+?href="(.+?)"/is", $str , $massiv);

и получаю ошибку.
Parse error: syntax error, unexpected '(' in ....


да и заметте, что в самом <a href=" есть %5C%22 как в начале так и в конце ссылки

Последний раз редактировалось UnOuter; 02.09.2009 в 21:55..
 
Ответить с цитированием

  #7  
Старый 02.09.2009, 21:56
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
С нами: 9362947

Репутация: 1196


По умолчанию

Цитата:
Сообщение от UnOuter  
Вставил сюда

preg_match_all ("/<a.+?href="(.+?)"/is", $str , $massiv);

и получаю ошибку.
Parse error: syntax error, unexpected '(' in ....


да и заметте, что в самом <a href=" есть %5C%22 как в начале так и в конце ссылки
preg_match_all ('/<a.+?href="(.+?)"/is', $str , $massiv);
 
Ответить с цитированием

  #8  
Старый 02.09.2009, 22:08
Tigger
Познавший АНТИЧАТ
Регистрация: 27.08.2007
Сообщений: 1,107
С нами: 9846041

Репутация: 1177


По умолчанию

UnOuter
ошибка из-за ковычек!
 
Ответить с цитированием

  #9  
Старый 02.09.2009, 23:52
eLWAux
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
С нами: 9423746

Репутация: 2399


По умолчанию

PHP код:
     $a '
     dasasdlad jlalsdasd asdloaim dasd 
     asd adsda d <a href="google.com">asdqwd aoldm aikjqld qw
     as<a          href=\'google2.com\'    >d a sd aksudmqid jlasdq d wqd aw
      al;sd ;<A hReF="gOgOlE3.cOm">askd aksd mpqdio aksldj qd
     '
;
     print 
htmlspecialchars($a).'<br><br>';
     
preg_match_all ("/<a.+?href=[\"'](.+?)[\"']/is"$a $m);
     print 
'<pre>';
     
var_dump($m[1]);
     print 
'</pre>'
Код:
dasasdlad jlalsdasd asdloaim dasd asd adsda d <a href="google.com">asdqwd aoldm aikjqld qw as<a href='google2.com' >d a sd aksudmqid jlasdq d wqd aw al;sd ;<A hReF="gOgOlE3.cOm">askd aksd mpqdio aksldj qd 

array(3) {
  [0]=>
  string(10) "google.com"
  [1]=>
  string(11) "google2.com"
  [2]=>
  string(11) "gOgOlE3.cOm"
}
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PSalm69 Избранное 273 13.02.2016 01:24
Books PHP FRAGNATIC PHP 186 21.02.2010 02:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.