Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Помогите с регулярный выражением на PHP (https://forum.antichat.xyz/showthread.php?t=138690)

UnOuter 01.09.2009 03:06

Помогите с регулярный выражением на 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

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

Pashkela 01.09.2009 03:26

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>


UnOuter 01.09.2009 21:24

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

Спасибо.

Pashkela 01.09.2009 21:53

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

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

и всё

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

eLWAux 01.09.2009 23:01

Цитата:

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

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

и всё

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

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

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

UnOuter 02.09.2009 21:51

Цитата:

Сообщение от 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 как в начале так и в конце ссылки

L I G A 02.09.2009 21:56

Цитата:

Сообщение от 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);

Tigger 02.09.2009 22:08

UnOuter
ошибка из-за ковычек!

eLWAux 02.09.2009 23:52

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"
}



Время: 01:21