webForumDet fria alternativet

Reg Exp: URL.

PHP

1 svar · 339 visningar · startad av D-M_R

Medlem sedan aug. 2002114 inlägg
Frågan#1

Har ett regexp som gör om [url ] och [/url ] till adress.
men om adressen är för lång så pajjas sidans layout.

$search = array(
"'(\[url\])(.*)(\[\/url\])'Ui",
);

$replace = array(
"<a href=\"\\2\" target=\"_blank\">\\2</a>",
);

$string = preg_replace($search, $replace, $string);

Vill på nå vis göra så själva namnet på länken förkortas.
så om man har en lång adress blir det bara tex
http://www.theverrylongadress.com/mapp/mapp...
eller nått.

Medlem sedan dec. 1999483 inlägg
#2

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

249 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)