preg_replace und Wortlänge

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #5
          sauber!

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

          Kommentar


          • #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.)
            Zuletzt geändert von wahsaga; 26.02.2005, 21:47.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


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

              Kommentar

              Lädt...
              X