|
|
|
| Заменяю текстовые ссылки на html в тексте я вот так:
$text = preg_replace("/(http:\\/\\/www.|www.|http:\\/\\/)(\\S+)/si",'<a href="http://\\2" target="_blank">\\2</a>',$text);
|
но существует проблема, если ссылка длинная, например на википедию, она не вмещается в структуру сайта и из-за этого веся вёрстка ползёт!!!
Подскажите, как сократить отображаемый текст ссылки например до 40 символов, но чтоб при этом сама ссылка работала.
Типа вот так:
<a href="http://yandex.ru/yandsearch?text=%D1%85%D0%BE%D1%87%D1%83+%D0%BA%D0%BE%D1%80%D0%BE%D1%82%D0%BA%D0%B8%D0%B5+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8&clid=139094&lr=213">http://yandex.ru/yandsearch?text=%D1%85...</a>
|
В голову приходит только это...
<?
$text = "elkjnwelfjefl http://yandex.ru/yandsearch?text=%D1%85%D0%BE%D1%87%D1%83+%D0%BA%D0%BE%D1%80%D0%BE%D1%82%D0%BA%D0%B8%D0%B5+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8&clid=139094&lr=213 hgwekjgn";
if(preg_match("/(http:\\/\\/www.|www.|http:\\/\\/)(\\S+)/si", $text, $save))
{
$link = $save[2];
$link = "http://".$link;
if(strlen($link)>40)
{
$link = substr($link,0,40);
$link = $link."...";
}
$text = preg_replace("/(http:\\/\\/www.|www.|http:\\/\\/)(\\S+)/si",'<a href="http://\\2" target="_blank">'.$link.'</a>',$text);
}
echo($text);
?>
|
но мне кажется это полный бред......
))))
тем более если две ссылки в тексте уже не прокатит..... | |
|
|
|
|
|
|
|
для: Job
(07.07.2011 в 11:42)
| | Обычно для этого используют функцию preg_replace_callback(), которая позволяет задать функцию обратного вызова для замены. В этом функции вы можете осуществить любые преобразования, в том числе и те, которые привели выше. | |
|
|
|
|
|
|
|
для: Job
(07.07.2011 в 11:42)
| |
<?
$num_links=preg_match_all("/(?<!\")(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.;~#?&\/\/=]+)(?!\.(jpg|jpeg|gif|png|bmp|psd|ico)\")/i",$text,$link_out);
unset($link_out[0]);
if($num_links>0){
for($i=0;$i<$num_links;$i++){
$click1=parse_url($link_out[1][$i]);
$click=$click1['host'];
$link=$link_out[1][$i];
$search2[]=$link;
$replace2[]="<a href=\"{$link}\" target=\"_blank\">{$click}</a>"; // Отображаться на странице будет только host, а не вся ссылка. Так красивее.
}
$answer=str_replace($search2,$replace2,$text);
}
else{$answer=$text;} //Если в $text ссылок не было, оставляем без изменений.
?>
|
| |
|
|
|