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 · 675 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?
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()