Hur gör man för att d ska göras om till <a href="www.sida.com">text</a> genom replace lr nått?
[url=www.sida.com]text[/url]
26 svar · 670 visningar · startad av Cactuz
Kanske kommer jag med hela, har inte testat:
$text = "Hej, besök [url=http://www.webforum.nu]webForum[/url] nu!";
$text = preg_replace ( "/\[url=((http:\/\/|https:\/\/|ftp:\/\/|mailto:|file:\/\/|telnet:\/\/|gopher:\/\/)|(www\.))([\w\.\/\?]+)\](.*?)[\/url]/is", "<a href=\"\\2\\3\\4\" target=\"_blank\">\\5</a>", $text );
Kan funka. :)
den där koden skrev inte ut ett ända tecken :)
Nu först jag ingenting, Cactuz? :q
Vad skulle forumet reagera på? Skrev inte min kod ut någonting? :)
Ingen som har en lösning på mitt problem? :)
SPiN: nope.. inte ett ända tecken ;)
jag använder nått likandnde (om inte samma) preg_replace som här ovan, men saken är att det sabbar hela min layout om URLerna är förlånga.
hur gör man för att få rdet
<a href='http://hela_urlen_på_en_massa_tecken'>femton_tecken_av urlen_och_tre_punkter...</A>
hehe hängde ni med på vad jag mena?? =)
Det beror på vad du menar med sabbar designen. Menar du d gammla vanliga att långa ord drar ut tables? Isåfall kan jag inte hjälpa sig då jag har samma problem :)
Denna funktionen förkortat URLen på det man ser och ersätter med 3 punkter
function shortlinks ($text, $maxchars) {
$temp = $text;
while (ereg("[A-Za-z]+://[^ <>\n]*[A-Za-z0-9/]", $temp, $regs)) {
$temp = str_replace ($regs[0], '', $temp);
$shortlink[count($links)] = substr (ereg_replace("[A-Za-z]+://([^ <>\n]*[A-Za-z0-9/])", "\\1", $regs[0]), 0, $maxchars);
$links[count($links)] = $regs[0];
$alink[count($links) - 1] = $links[count($links) - 1];
if ('http://' . $shortlink[count($links) - 1] != $links[count($links) - 1]) {
$shortlink[count($links) - 1] .= '...';
}
}
while (ereg("www\\.[^ <>\n]*[A-Za-z0-9/]", $temp, $regs)) {
$temp = str_replace ($regs[0], '', $temp);
$shortlink[count($links)] = substr ($regs[0], 0, $maxchars);
$links[count($links)] = $regs[0];
$alink[count($links) - 1] = 'http://' . $links[count($links) - 1];
if ($shortlink[count($links) - 1] != $links[count($links) - 1]) {
$shortlink[count($links) - 1] .= '...';
}
}
for ($i = 0; $i < count ($links); $i++) {
$text = str_replace ($links[$i], '<a href="' . $alink[$i] . '" target="_blank">' . $shortlink[$i] . '</a>', $text);
}
return $text;
}
Den där koden gjorde.. livet en aning lättare för mig :)
Men får felmeddelandet:
Notice: Undefined variable: links in ... on line 25
Notice: Undefined variable: links in ... on line 26
även fast scriptet funkar :)
Ingen som vet varför? =)
Använd isset() mot variabeln links i if-satserna, så ska det fungera - eller deklarera links först i funktionen.
isset( $links )
// Eller
$links = array()