|
|
|
| есть текст, мне нужно найти все ссылки в тексте, а именно адрес ссылки и применить к адресу функцию urldecode | |
|
|
|
|
|
|
|
для: admiral
(31.01.2011 в 15:35)
| | Это обычный plain-текст, не HTML? Ссылки все начинаются http:// или www или они могут быть в любом формате?
PS Хорошо бы примерчик текста увидеть. | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 16:23)
| | вот пример
Существует множество различных <a href="http://сайт.рф/поисковые_решения">решений поиска даных, одно из них можно найти на <a href="/решение">нашем сайте</a></a>
|
| |
|
|
|
|
|
|
|
для: admiral
(31.01.2011 в 16:34)
| | Не поучения ради, а интереса для, а почему ссылки вложенные (вроде как внутренняя не должна работать)?
PS Решение сейчас постараюсь подготовить. | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 16:38)
| | >Не поучения ради, а интереса для, а почему ссылки вложенные (вроде как внутренняя не должна работать)?
>
>PS Решение сейчас постараюсь подготовить. | |
|
|
|
|
|
|
|
для: admiral
(31.01.2011 в 16:34)
| | Можно начать отталкивать от такого скрипта
<?php
$text = 'Существует множество различных
<a href="http://сайт.рф/поисковые_решения">решений поиска даных,
одно из них можно найти на <a href="/решение">нашем сайте</a></a>';
$pattern = "|<a href=\"([^\"]+)\">|is";
$text = preg_replace_callback($pattern, "replace_url", $text);
echo $text;
function replace_url($out)
{
return "<a href=\"".rawurlencode($out[1])."\">";
}
?>
|
Он конечно преобразует все подряд, но доработать его до нужно кондиции можно. | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 16:43)
| | я в примере ошибся, нечайно в сылке прописал еще ссылку. такого быть не может. прошу прощенияч спешил)) теперь понял почему вы спрсоили) | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 16:43)
| | абсолютную ссылку неверно обрабатывает( | |
|
|
|
|
|
|
|
для: admiral
(31.01.2011 в 16:50)
| | А как надо, чтобы / игнорировались или проблема в чем-то другом? | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 16:52)
| | он добавляет 2 раза http и причем свой собственный домен, вот какполучилось с вашего скрипта
http://site/http%3A%2F%2F%F1%E0%E9%F2.%F0%F4%2F%EF%EE%E8%F1%EA%EE%E2%FB%E5_%F0%E5%F8%E5%ED%E8%FF
|
Исходный пример (правильный)
<?php
$text = 'Существует множество различных
<a href="http://сайт.рф/поисковые_решения">решений поиска даных</a>,
одно из них можно найти на <a href="/решение">нашем сайте</a>';
$pattern = "|<a href=\"([^\"]+)\">|is";
$text = preg_replace_callback($pattern, "replace_url", $text);
echo $text;
function replace_url($out)
{
return "<a href=\"".urlencode($out[1])."\">";
}
?>
|
| |
|
|
|
|
|
|
|
для: admiral
(31.01.2011 в 16:58)
| | блин обрезает
http://site/http%3A%2F%2F%F1%E0%E9%F2.%F0%F4%2F%EF%EE%E8%F1%EA%EE%E2%FB%E5_%F0%E5%F8%E5%ED%E8%FF | |
|
|
|
|
 237 байт |
|
|
для: admiral
(31.01.2011 в 16:58)
| | Хм... не наблюдаю такого, скрипт точно не подвергался изменениям? Мой результат во вложении - он совпадает с вашим? | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 17:02)
| |
<?php
$text = 'Существует множество различных
<a href="http://сайт.рф/поисковые_решения">решений поиска даных</a>,
одно из них можно найти на <a href="/решение">нашем сайте</a>';
$pattern = "|<a href=\"([^\"]+)\">|is";
$text = preg_replace_callback($pattern, "replace_url", $text);
echo $text;
function replace_url($out)
{
return "<a href=\"".rawurlencode($out[1])."\">";
}
?>
|
У вас этот пример нормально работает?
У меня первый адрес получается такой
http://oszn/http%3A%2F%2F%F1%E0%E9%F2.%F0%F4%2F%EF%EE%E8%F1%EA%EE%E2%FB%E5_%F0%E5%F8%E5%ED%E8%FF | |
|
|
|
|
|
|
|
для: admiral
(31.01.2011 в 17:10)
| | Хм... более чем странно, oszn вроде вообще нигде нет... У меня первая ссылка такая получилось (скрипт скопировал, использовал кодировку win-1251)
http%3A%2F%2F%F1%E0%E9%F2.%F0%F4%2F%EF%EE%E8%F1%EA%EE%E2%FB%E5_%F0%E5%F8%E5%ED%E8%FF | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 17:13)
| | у меня просто имя локального домена oszn, и еще реврайт в htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} http\: [OR]
RewriteCond %{QUERY_STRING} \[ [OR]
RewriteCond %{QUERY_STRING} \] [OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^.*$ - [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
|
| |
|
|
|