|
|
|
| Можно ли составить регулярное выражение, которое преобразовывало url (полный url) вида :
http://cmsproteus/index.php?gl_page=forum_posts_list&id_for=1&id_theme=8&for_t_part=0&for_p_part=1
|
в такую конструкцию
<a href='{полный url}' target='_blank'>{краткий url}</a>
|
Краткий url может выглядеть так:
http://cmsproteus/index.php?gl...
Дело в том, что особо длинные url портят дизайн. В одном популярном форуме (не помню каком) это реализовано.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: antf
(02.10.2006 в 12:27)
| | Длинные URL сейчас входят в состав тэга <a> или просто URL в тексте? | |
|
|
|
|
|
|
|
для: cheops
(02.10.2006 в 14:42)
| | Длинный - для тега, короткий - для дизайна :) | |
|
|
|
|
|
|
|
для: antf
(02.10.2006 в 17:58)
| | я немного в курсе, так что уточню - просто URL в тексте | |
|
|
|
|
|
|
|
для: antf
(02.10.2006 в 17:58)
| | В тексте, который имеется, URL'ы в тегах или просто текстом ? :) | |
|
|
|
|
|
|
|
для: kasmanaft
(02.10.2006 в 19:25)
| | давайте так попробуем :
из <a href='http://www.textpattern.ru/forum/help.php#bbcode' target='_blank'>http://www.textpattern.ru/forum/help.php#bbcode</a>
сделать <a href='http://www.textpattern.ru/forum/help.php#bbcode' target='_blank'>http://www.textpattern.ru</a>
//усложним задачу - оставить в коротком варианте только домен. | |
|
|
|
|
|
|
|
для: AlexSol
(02.10.2006 в 19:34)
| | Эх... =))
Не уверен, что оно будет работать на отлично .. тестим :)
<?php
$text = "text blablabla <a href='http://www.textpattern.ru/forum/help.php#bbcode' target='_blank'>http://www.textpattern.ru/forum/help.php#bbcode</a> text blablabla";
echo preg_replace ("#(<a[\s]+href=['\"]?)(http://)?([^/'\"]+)([^'\"]*?)(['\"]?.*?>).*?</a>#i", "$1$2$3$4$5$3</a>", $text);
?>
|
.. сам потестил - вроде норм ... | |
|
|
|
|
|
|
|
для: kasmanaft
(02.10.2006 в 20:07)
| | Отличную идею подсказал AlexSol. А это регулярное выражение натолкнуло меня на интересную мысль. Я решил сделать так
<?
$pattern = "#\[url\](http://[^/]+)(.*?)\[/url\]#is";
$replace = "<a href='$1$2' target='_blank'>$1</a>";
$post = preg_replace($pattern, $replace, $post);
?>
|
| |
|
|
|