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?
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.
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.
262 ms totalt · 4 externa anrop · v20260731065814-full.05830320