---
title: "URL och wordwrap function gillar ej varandra?!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/179003-url-och-wordwrap-function-gillar-ej-varandra"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "jwradhe"
published: "2009-06-15T19:17:52.000Z"
updated: "2009-06-16T18:12:19.000Z"
replies: 3
views: 323
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/179003-url-och-wordwrap-function-gillar-ej-varandra"
---

# URL och wordwrap function gillar ej varandra?!

## #1 — jwradhe, 2009-06-15T19:17Z

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?

```php
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
 

```php
url(real_wordwrap($text,40,"<br />\n"));
```

 
Kan detta göras på annat sätt för att få fram önskat resultat?

Permalänk: https://www.webforum.nu/p/179003

## #2 — jwradhe, 2009-06-16T16:50Z

Någon vänlig själ som har någon aning, kanske ska ja formulera om frågan?

Permalänk: https://www.webforum.nu/p/2190787

## #3 — nitro2k01, 2009-06-16T18:00Z

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.

Permalänk: https://www.webforum.nu/p/2190791

## #4 — nitro2k01, 2009-06-16T18:12Z

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.

Permalänk: https://www.webforum.nu/p/2190792

---

Tråden på webben: https://www.webforum.nu/amne/php/179003-url-och-wordwrap-function-gillar-ej-varandra
