Avatar billede yaief Nybegynder
11. august 2003 - 03:27 Der er 2 kommentarer og
1 løsning

Wordwrap / komibnation af to reg.exp

Hejsa

Jeg har to regular expressions der hver især fungerer fint - til deres formål.

1. $msgBody = preg_replace('%(\s*)([^>]{'.$wrap_at.',})(<|$)%e',"'\\1'.wordwrap('\\2', '".$wrap_at."', '<br />', 1).'\\3'", $msgBody);
Laver wordwrap efter $wrap_at antal tegn - og undlader fint at tælle tags med

2. $msgBody = preg_replace ("/([^\s]{72,})/e", "''.wordwrap('\\1', 72, ' ', 1).''", $msgBody);
Den tager ikke tags med - men i modsætning til den anden laver den kun wrap på sammenhængende ord (uden mellemrum).

Så - hvis nogen kunne lave en kombination ville det være perfekt. En wordwrap der breaker ord efter et bestemt antal tegn - men ser bort fra tags.

Og ja - jeg har forsøgt selv ... indtil flere gange. Men reg.exp. er langt fra min stærke side endnu ...

Mvh
YaiEf
Avatar billede limemedia Nybegynder
11. august 2003 - 04:34 #1
Jeg har i min tagster (http://www.ljweb.com/usefulscripts/) løst problemet på denne måde

    function tagster_fix_longword($str, $maxlen = 10) {
        $sw = 0;
        $in_tag = false;
        $str_size = strlen($str);
        $res = "";

        for ($i=0; $i<$str_size; $i++){
            if ($str[$i] == '<') $in_tag = true;
            else if ($str[$i] == ' ') $sw = 0;

            if (!$in_tag && (($sw++) > $maxlen)) {
                $res .= '&shy;';
                $sw = 0;
            }
           
            if ($str[$i] == '>') $in_tag = false;
            $res .= $str[$i];
        }
       
        return $res;
    }

Jeg vil en af dagene kigge på en regexp variant

/ Lars
Avatar billede yaief Nybegynder
11. august 2003 - 10:20 #2
Hej Lars

Udemærket løsning ... så lærte jeg da lidt i dag - anede ikke man kunne behandle enkeltdelene i en string som et array - så jeg var godt på vej til at skrive min egen bare med substring.

Men tak for det - jeg afholdt mig egentlig fra at lave en lignende løsning fordi jeg var bange for det ville æde for meget kraft i forhold til en reg.exp. Men det ser ikke umiddelbart ud til det er noget problem.

Mvh
YaiEf
Avatar billede limemedia Nybegynder
10. september 2003 - 09:57 #3
inden regexp variant, men skulle vi ikke få lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester