Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Помогите с регулярный выражением на PHP |

01.09.2009, 03:06
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 5
Провел на форуме: 15612
Репутация:
0
|
|
Помогите с регулярный выражением на PHP
Здравствуйте, уважаемые программисты.
Помогите составить регулярку на PHP для такого:
имеем
Код:
<b>Линки</b></a><hr><a href="\http://site.ru/id.php?key=523169210347762514824620110374859\" class="\"takru\"" target="\"_top\"" onclick='\"javascript:' rnd(this);\="">
в итоге должны получить
Код:
http://site.ru/id.php?key=523169210347762514824620110374859
В общем извлечь ссылку из текста
|
|
|

01.09.2009, 03:26
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
PHP код:
<pre>
<?php
$a = <<<HTML
<b>Линки</b></a><hr><a href="\http://site.ru/id.php?key=523169210347762514824620110374859\" class="\"takru\"" target="\"_top\"" 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..
|
|
|

01.09.2009, 21:24
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 5
Провел на форуме: 15612
Репутация:
0
|
|
Спасибо, но мне кажется он немного не универсальный. То есть стоит поменяться какому-то тегу то ссылку я уже не извлеку. Хотелось бы более универсальные решения.
Спасибо.
|
|
|

01.09.2009, 21:53
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
оставь тогда внутри регулярки только
<a href="\\\(.*)\\\
и всё
< ahref ведь не поменяется? А вообще, прежде чем спрашивать, надо давать сразу все возможные варианты, а не только одну строчку, по идее
|
|
|

01.09.2009, 23:01
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
Сообщение от Pashkela
оставь тогда внутри регулярки только
<a href="\\\(.*)\\\
и всё
< ahref ведь не поменяется? А вообще, прежде чем спрашивать, надо давать сразу все возможные варианты, а не только одну строчку, по идее
сосайтнек, а что если будет <a target="_blank" href="http://google.com">.. ? даже если когда будет hREf , тоже не будет результата.
зачем такую "строгую" регулярку делать? будь попроще и делай более универсальные..
UnOuter:
/ <a.+?href="(.+?)"/is
|
|
|

02.09.2009, 21:51
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 5
Провел на форуме: 15612
Репутация:
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..
|
|
|

02.09.2009, 21:56
|
|
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме: 4532332
Репутация:
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);
|
|
|

02.09.2009, 22:08
|
|
Познавший АНТИЧАТ
Регистрация: 27.08.2007
Сообщений: 1,107
Провел на форуме: 5386281
Репутация:
1177
|
|
UnOuter
ошибка из-за ковычек!
|
|
|

02.09.2009, 23:52
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
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"
}
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|