preg_replace und Wortlänge

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • preg_replace und Wortlänge

    Hi Leute,

    habe die Suchfunktion gequält, konnte aber nichts definitives finden. Daher nochmal die Frage allgemein formulliert, damit auch zukünftige Generationen bzw. andere User was davon haben können

    Man habe einen Text:
    "Dies ist ein beispielhafter Beispieltesttext, in dem die Wortlänge gekürzt werden soll !!!!!!!!!!!!!!!"

    Nun soll jedes Wort, das eine vordefinierte maximale Wortlänge überschreitet, gekürzt werden.
    Sei diese maximal 10 Zeichen, soll folgendes herauskommen:
    "Dies ist ein beispielha... Beispielte..., in dem die Wortlänge gekürzt werden soll !!!!!!!!!!..."

    Welches Regex muss hier angewandt werden?

    Ich habe folgendes aufgestellt, was aber so gar niht klappt:
    PHP Code:
    preg_replace("/(([^:alnum:]+:alnum:\){50})(.+)/is""\\1..."$text
    Wie geht's nu?
    arrays sind klasse

  • #2
    Re: preg_replace und Wortlänge

    warum nicht einfach ohne preg?
    PHP Code:
    $text 'Dies ist ein beispielhafter Beispieltesttext, in dem die Wortlänge gekürzt werden soll !!!!!!!!!!!!!!!';
    $text explode(' '$text);
    foreach (
    $text as $key => $value)
    {
     if (
    strlen($value) > 10)
      
    $text[$key] = substr($value010) . '...';
    }
    $text implode(' '$text); 

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Comment


    • #3
      Das wäre natürlich kein Problem, nur möchte ich den Code im Kontext des Scriptes "sauber" haben - daher auch in diesem Fall mit preg_replace
      arrays sind klasse

      Comment


      • #4
        Re: Re: preg_replace und Wortlänge

        Original geschrieben von Maranello-550
        daher auch in diesem Fall mit preg_replace
        Mit dem kleinen Problem, dass meine Möglichkeit funktioniert...und deine nicht

        nur möchte ich den Code im Kontext des Scriptes "sauber" haben
        Du glaubst das ist "unsauber"?
        Check this out:
        PHP Code:
        $text 'Dies ist ein beispielhafter Beispieltesttext, in dem die Wortlänge gekürzt werden soll !!!!!!!!!!!!!!!';
        $text=explode(' ',$text);foreach($text as $key=>$value){if(strlen($value)>10)$text[$key]=substr($value,0,10).'...';$text=implode(' ',$text); 

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Comment


        • #5
          sauber!

          aber es muss doch per regex noch cleaner gehen
          arrays sind klasse

          Comment


          • #6
            Re: preg_replace und Wortlänge

            vorschlag #1:
            PHP Code:
            preg_replace('!(\\s?\\S{10})\\S*(\\s?)!''$1...$2'$text
            ergibt
            Code:
            Dies ist ein beispielha... Beispielte... in dem die Wortlänge gekürzt werden soll !!!!!!!!!!...
            - das komma hinter "Beispieltext" geht also dabei mit drauf.

            vorschlag #2:
            PHP Code:
            preg_replace('!\\b(\\S{10})\\S*\\b!''$1...'$text); 
            ergibt
            Code:
            Dies ist ein beispielha... Beispielte..., in dem die Wortlänge gekürzt werden soll !!!!!!!!!!!!!!!
            komma bleibt erhalten, aber durch benutzung von \b für word boundary werden die multiplen ausrufezeichen dann wiederum nicht mehr gekürzt ...


            also überlegen, welches von beiden übeln dir lieber ist - oder daraus noch eine version basteln, die wirklich haargenau wie gewünscht funktioniert :-)

            (backslashes im code gedoppelt, wegen verschluckens durch das forum.)
            Last edited by wahsaga; 26-02-2005, 21:47.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Comment


            • #7
              Danke dir. Mir persönlich reicht erstere Variante.
              arrays sind klasse

              Comment

              Working...
              X