jwradheMedlem sedan juni 2002818 inlägg
Håller på med en kod där jag använder en slags BBcode till url samt sedan en "real_wordwrap" funktion på en text, men vill inte att wordwrap ska bryta en [ u r l = adress ] Sida [ / u r l ] kod utan skippa sånna men wordwrap på resten, hur ska ja göra?
function real_wordwrap($string,$width,$break){
$string = preg_replace('/([^\s]{'.$width.'})/i',"$1$break",$string);
return $string;
}
function url($text){
//remove < and > and " ect.
$text = htmlspecialchars($text);
$text = preg_replace ('/\[url\=(.*?)\](.*?)\[\/url\]/is', '<a href="http://$1" target="_blank">$2</a>', $text);
$text = nl2br($text);
$text = trim($text);
return $text;
}
och sen kör jag
url(real_wordwrap($text,40,"<br />\n"));
Kan detta göras på annat sätt för att få fram önskat resultat?
jwradheMedlem sedan juni 2002818 inlägg
Någon vänlig själ som har någon aning, kanske ska ja formulera om frågan?
nitro2k01Medlem sedan aug. 20037 630 inlägg
Försök 1...
<?PHP
function raw_wordwrap($string,$width,$break){
$string = preg_replace('/([^\s]{'.$width.'})/i',"$1$break",$string);
return $string;
}
function real_wordwrap($string,$width,$break){
$string = preg_replace('/([^<]*)(<[^>]+>)?/ie', 'raw_wordwrap("$1", '.$width.', \'' . $break . '\')."$2" ',$string);
return $string;
}
function url($text){
//remove < and > and " ect.
$text = htmlspecialchars($text);
$text = preg_replace ('/\[url\=(https?:\/\/[^\]]+)\](.*?)\[\/url\]/is', "<a href=\"$1\" target=\"_blank\">$2</a>", $text);
$text = nl2br($text);
$text = trim($text);
return $text;
}
$text="cvbnmnbvbxmcvbnxcmvbxcvmnbxcvmxbncvmxcbvxmvbxmvbxcmvb[u[b][/b]rl=http://www.wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww.com]mycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycket[/url][u[b][/b]rl=http://]ogiltigurl[/url][u[b][/b]rl=http://www.google.se]lank1paraken[/url][u[b][/b]rl=http://www.google.se]lank2paraken[/url]mycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycket";
echo real_wordwrap(url($text),40,"<br />\n");
?>
Funkar, och jag har förbättrat tagg-detektionen lite. Dock så är det möjligt att stoppa in längre ord än gränsen genom att lägga flera url-taggat efter varandra där varje textsträng är lite kortare än gränsen. Det enkla sättet skulle vara att lägga in ett mellanslag innan a-taggen. Jag ska dock fnula lite på det svåra sättet och återkomma.
nitro2k01Medlem sedan aug. 20037 630 inlägg
Försök 2
<?PHP
function real_wordwrap($string,$width,$break){
$string = preg_replace('/([^<](<[^>]+>)?){'.$width.'}/i', "$0$break",$string);
return $string;
}
function url($text){
//remove < and > and " ect.
$text = htmlspecialchars($text);
$text = preg_replace ('/\[url\=(https?:\/\/[^\]]+)\](.*?)\[\/url\]/is', "<a href=\"$1\" target=\"_blank\">$2</a>", $text);
$text = nl2br($text);
$text = trim($text);
return $text;
}
$text="cvbnmnbvbxmcvbnxcmvbxcvmnbxcvmxbncvmxcbvxmvbxmvbxcmvb[url=http://www.wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww.com]mycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycke[/url][url=http://]ogiltigurl[/url][url=http://www.google.se]lank1paraken[/url][url=http://www.google.se]lank2paraken[/url]mycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycketmycket";
echo real_wordwrap(url($text),40," ");
?>
Så det, det gick enklare än jag trodde. Nu bör koden göra precis det du vill. Notera att url numera ska anropas innanför real_wordwrap. För övrigt så bör man, enligt min högst personliga åsikt, ha mellanslag som separationstecken och låta texten flöda naturligt i dokumentet.