|
|
|
|
|
для: Sfinks
(06.02.2012 в 04:04)
| | Спасибо. То, что нужно. =) | |
|
|
|
|
|
|
|
для: Z3RO
(06.02.2012 в 00:35)
| | Общий вид такой:
<?
$pattern = "#http://([а-яёa-z\d][а-яёa-z\d\-]*\.)+[а-яёa-z]{2,6}(/([а-яё\w\-\.]*[а-яё\w\-/]{1})*(\?(([a-z][\w\-]*)?(=(%[a-z\d]{2}|[\w\-\.\+])*)?)?(&(amp;)?(([a-z][\w\-]*)?(=(%[a-z\d]{2}|[\w\-\.\+])*)?)?)*)?)?#ui";
$url = preg_replace($pattern,"<a href=\"$0\">",$url);
| Это в предположении что у вас используется UTF-8. Если нет, нужно в конце перед i убрать модификатор u.
Дальше пример, какие урлы понимает это выражение:
<?
header("content-type: text/plain; charset=utf-8");
$urls = array( "http://site.ru.",
"http://site.ru.com",
"http://site.ru.com/",
"http://сайт.ru.com/dir/",
"http://site.ru.com/dir/file.php",
"http://site.рф.com/dir/lbh/file.php?a",
"http://site.ru.com/dir/file.php?a=r5%2F",
"http://site.ru.ком/dir/file.php?a=r5%2F&",
"http://site.ru.com/dir/file.php?a=r5%2F&b=12",
"http://site.ru.com/дир/file.php?a=r5%2F&b=12&c=" );
$max_len = mb_strlen($urls[9],"utf-8");
$pattern = "#http://([а-яёa-z\d][а-яёa-z\d\-]*\.)+[а-яёa-z]{2,6}(/([а-яё\w\-\.]*[а-яё\w\-/]{1})*(\?(([a-z][\w\-]*)?(=(%[a-z\d]{2}|[\w\-\.\+])*)?)?(&(amp;)?(([a-z][\w\-]*)?(=(%[a-z\d]{2}|[\w\-\.\+])*)?)?)*)?)?#ui";
foreach($urls as $url)
echo $url.str_repeat(" ",$max_len-mb_strlen($url,"utf-8")).
" => ".preg_replace($pattern,"<a href=\"$0\">",$url)."\n";
| результат:
http://site.ru. => <a href="http://site.ru">.
http://site.ru.com => <a href="http://site.ru.com">
http://site.ru.com/ => <a href="http://site.ru.com/">
http://сайт.ru.com/dir/ => <a href="http://сайт.ru.com/dir/">
http://site.ru.com/dir/file.php => <a href="http://site.ru.com/dir/file.php">
http://site.рф.com/dir/lbh/file.php?a => <a href="http://site.рф.com/dir/lbh/file.php?a">
http://site.ru.com/dir/file.php?a=r5%2F => <a href="http://site.ru.com/dir/file.php?a=r5%2F">
http://site.ru.ком/dir/file.php?a=r5%2F& => <a href="http://site.ru.ком/dir/file.php?a=r5%2F&">
http://site.ru.com/dir/file.php?a=r5%2F&b=12 => <a href="http://site.ru.com/dir/file.php?a=r5%2F&b=12">
http://site.ru.com/дир/file.php?a=r5%2F&b=12&c= => <a href="http://site.ru.com/дир/file.php?a=r5%2F&b=12&c=">
|
| |
|
|
|
|
|
|
|
для: Sfinks
(05.02.2012 в 23:45)
| | Не совсем любую. Вобщем нужно выражение, которое будет правильно превращать ЮРЛ в тексте на ссылки. | |
|
|
|
|
|
|
|
для: Z3RO
(05.02.2012 в 13:57)
| | Для начала скажите, какого вида ссылки могут быть?
Только "http://site.ru.", или и "http://site.ru/." и "http://site.ru./" и "http://site.ru/index.php." и так далее. И из какого места убирать точку, из домена, из пути, из файла, из любого места, где ее не должно быть или просто из конца любой ссылки?
Просто по вашему выражению не понятно, что переделывать. Оно пропустит любую белиберду начиная от просто http:// и заканчивая http://......'-\|/-'.....%%=#=. | |
|
|
|
|
|
|
|
для: Z3RO
(05.02.2012 в 20:15)
| |
preg_replace("/(http:\/\/[a-z0-9\.\-]+\.[a-z]{2,3}).*/i", "<a href='\\1'>\\1</a>", "http://blog.mokoron.com");
|
| |
|
|
|
|
|
|
|
для: ladan
(05.02.2012 в 16:08)
| | Нет, нужно чтобы все доменные зоны проходили и данное выражение адреса с поддоменами не будет видеть. | |
|
|
|
|
|
|
|
для: Z3RO
(05.02.2012 в 13:57)
| | пойдет? :)
<?
$str = "http://site.ru...";
echo preg_replace("/^(http:\/\/[a-z0-9\.\-]+(ru|org|com)).*$/i", "<a href='\\1'>\\1</a>", $str);
?>
|
| |
|
|
|
|
|
|
| Здравствуйте. Как мне переделать это выражение:
$str = ereg_replace("http://(([A-Za-z0-9.=%&;#-_]+(\/)?(\?)?)*)", "<a href=\"\\0\">\\0</a>", $str);
|
Таким образом, чтобы, к примеру, в строке "http://site.ru." последняя точка не считалась частью ссылки. | |
|
|
|
|