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

03.03.2009, 18:42
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
это я когда в форум вставлял напутал, вообще то там переменная
preg_replace('#<a href="(.*)">(.*)</a>#sU',"$1",$e);
вот так в оригинале.
твой вариант не особо в тему т.к. новое название я должен вытащить из старого. то есть из
<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.op era.com</a>
должно получиться www.opera.com
Вообще особенно интересует почему мой вариант не работает. 
|
|
|

03.03.2009, 18:50
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
Дык если просто вытащить надо, то зачем использовать preg_replace() когда есть preg_match() ?
PHP код:
$a = '<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>';
preg_match('#>([^<]*)</a>#s', $a, $out);
echo $out[1];
Сообщение от blaga
Вообще особенно интересует почему мой вариант не работает.
Потому что не объявлена переменная $1 и путаница с кавычками (как сказано выше)
|
|
|

03.03.2009, 19:30
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
Нужно не просто вытащить а в тексте заменить.
бла бла бла
<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.op era.com</a>
бла бла бла
из этого нужно что бы получилось.
бла бла бла
www.opera.com
бла бла бла
там же двойные кавычки внутри одинарных. они вроде как не должны интерпретитьроваться.... ?
например
Код:
$reg='#<div class="postblock1">(.*)</div>#sU';
preg_match_all($reg,$res,$result);
прекрасно работает.
Enot, твоя регулярка тоже не цепляет... 
Последний раз редактировалось blaga; 03.03.2009 в 19:32..
|
|
|

03.03.2009, 20:03
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
blaga Регулярка правильна, просто надо следить за подмасками. Достаточно убрать скобки внутри href="(.*)" ИЛИ обращаться ко второй подмаске (ака $2 во втором параметре)
PHP код:
echo preg_replace('#<a href=".*">(.*)</a>#sU',"$1",'<a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>');
Или проще:
PHP код:
preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$in);
Код:
На входе: <a href="/bitrix/exturl.php?goto=http%3A%2F%2Fwww.opera.com">www.opera.com</a>
На выходе: www.opera.com
.:EnoT:. К слову, переменная - НЕ может начинаться на цифру
|
|
|

03.03.2009, 20:15
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
я щас об стенку убьюсь. ни одна регулярка не схватывает... 
короч вот он чертов быдло код.
PHP код:
function get_full_vul($url)
{
$r=file_get_contents($url);
$re='#<div class="cont-cont">(.*)<p><strong>Источники#sU';
preg_match($re,$r,$all);
$e=str_replace('<div class="cont-cont">'," ",$all[0]);
$e=str_replace('<div class="title-line" id="title-vulnerability">'," ",$e);
$e=str_replace('</div>'," ",$e);
$e=str_replace('<div class="postblock3">'," ",$e);
$e=str_replace('<p><strong>Источники'," ",$e);
preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$e);
echo $e;
}
get_full_vul("http://www.securitylab.ru/vulnerability/369396.php");
и еще что за модификатор U ? а то у меня в книге про него нету ничего.
|
|
|

03.03.2009, 20:24
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
полный улёт  ) Скажи толком, просто, что тебе надо, тут дел на 5 минут  Лучше дай ссылку на страничку и чо там с ней надо "выцепить/заменить"
|
|
|

03.03.2009, 20:35
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
Дык сразу бы код выложил)
PHP код:
preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$e);
замени на:
PHP код:
$e = preg_replace('#<a href="[^"]*">([^<]*)</a>#si','<a href="http://\\1">\\1</a>',$e);
И всё будет работать)
|
|
|

03.03.2009, 20:47
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Сообщение от blaga
я щас об стенку убьюсь. ни одна регулярка не схватывает... 
короч вот он чертов быдло код.
PHP код:
function get_full_vul($url)
{
$r=file_get_contents($url);
$re='#<div class="cont-cont">(.*)<p><strong>Источники#sU';
preg_match($re,$r,$all);
$e=str_replace('<div class="cont-cont">'," ",$all[0]);
$e=str_replace('<div class="title-line" id="title-vulnerability">'," ",$e);
$e=str_replace('</div>'," ",$e);
$e=str_replace('<div class="postblock3">'," ",$e);
$e=str_replace('<p><strong>Источники'," ",$e);
preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$e);
echo $e;
}
get_full_vul("http://www.securitylab.ru/vulnerability/369396.php");
и еще что за модификатор U ? а то у меня в книге про него нету ничего.
U - минимизировать числитель, то есть искать как можно меньше совпадений
|
|
|

03.03.2009, 21:11
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
blaga Может лучше так?
PHP код:
function get_full_vul($url)
{
$r=file_get_contents($url);
$re='#<div class="cont-cont">(.*)<p><strong>Источники#sU';
preg_match($re,$r,$all);
$e=strip_tags($all[1],'<p><strong><h1><b><br>');
echo $e;
}
get_full_vul("http://www.securitylab.ru/vulnerability/369396.php");
Про модификаторы - тут http://ru.php.net/manual/ru/reference.pcre.pattern.modifiers.php
|
|
|

04.03.2009, 06:18
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
.:EnoT:., спасиб, работает как нужно. 
Gifts, мне не нужно все эти теги удалять, только некоторые.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|