Detta funkar
<?
function test($str,$newlen) {
$oldstr = strlen ($str);
if ($oldstr > $newlen) {
return substr ($str, 0, $newlen * 0.7 - 2) ."...". substr ($str, $oldlen - ($newlen * 0.3 + 1));
}
return $str;
}
$string = "JAG [url]http://www.test.com[/url] [url]http://www.webhallen.com/admin/hej/asdjkkjehnan/ajksdkj/bilder/temp/hej.php[/url] inget";
$search = array("'(\[url\])(.*)(\[\/url\])'Uie");
$replace = array("'<a href=\"\\2\" target=\"_blank\">'.test('\\2',50).'</a>'");
$string = preg_replace($search, $replace, $string);
echo $string;
?>
Ändra siffran som nu är 50 till hur lång du vill att den nya strängen ska bli.
För långa blir http://www.test.com/asd...asd/hej.php
Koden blir helt konstig så jag laddade upp den i stället. Du hittar den här: http://www.webhallen.com/emil/regexp_links.phps