Text links und maximale Wortlänge angeben

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

  • Text links und maximale Wortlänge angeben

    Ich stehe vor folgender Problematik,

    Ich habe WYSIWIG Felder bei denen Links und Content eingegeben werden kann.

    Wenn nun ein Link oder ein Wort sehr lange ist, so möchte ich gerne dieses Wort und den visible Bereich des Link kürzen. Also nur den Linktext kürzen und den href lassen...

    Wenn etwas abgeschnitten wurde nach x Zeichen so werden ... angefügt.

    habe mit wordwrap und regexp in verbindung mit explode experimentiert... naja und nix wirklich brauchbares gefunden...

    wer hat eine Idee?

    Beste Grüsse aus Zürich
    Roger

  • #2
    habs mal sehr mechanisch versucht...
    vielleicht hat jemand ne bessere Lösung, obwohl das ganze noch angenehm schnell ist... (das wundert mich ehrlichgesagt ein wenig)

    PHP-Code:
    echo $string 'ein demoVideo Like:<br /> <a  href="http://www.youtube.com/watch?v=-dnL00TdmLY">Wiki ' .
            
    'Demo Movie</a><br/><a href="http://www.youtube.com/watch?v=6a_KF7TYKVc">[url]http://www.youtube.com[/url]' .
            
    '/watch?v=6a_KF7TYKVc</a><br /><a href="http://www.youtube.com/watch?v=x66lV7GOcNU">[url]http://www.[/url]' .
            
    'youtube.com/watch?v=x66lV7GOcNU</a> tja und so weiter und so fort geht es...<br />es kann ' .
            
    'auch mal was dazwischen stehen einesooooooooooooooooolangeswort';



    $start microtime(true);
    echo 
    "<br /><br /><br />".cut_wysiwig_str($string);
    $stop microtime(true);
    $time $stop-$start;
    echo 
    "<br /><br />".$time
    und die function dazu;
    PHP-Code:
    function cut_wysiwig_str($string$maxWordlenght 28 ){
        
        
    $links "";
        
    $linkPatern '/\<a\s*\href\s*\=(.*?)\<\/a\>/i';
        
    preg_match_all($linkPatern$string$linksPREG_PATTERN_ORDER);
        
        foreach(
    $links['1'] as $linkA ){
            
    $link[]= explode(">"$linkA);
        }
        
        
    $ausgabe preg_replace($linkPatern"xo::ox "$string );
        
    $ausgabe explode(" "$ausgabe);

        
    $string "";
        
    $i 0;
        foreach(
    $ausgabe as $word){
            if ( 
    strpos($word"xo::ox") !== false ){
                if ( 
    strlen($link[$i][1]) >= $maxWordlenght ){
                    
    $linkB '<a target="_blank" href='.$link[$i][0].'>'.substr($link[$i][1], 0, ($maxWordlenght-3)).'...'.'</a> ';
                }else{
                    
    $linkB '<a target="_blank" href='.$link[$i][0].'>'.$link[$i][1].'</a>';
                }            
                
    $string .= str_replace("xo::ox"$linkB$word )." ";
                
    $i++;
            }else if ( 
    strlen($word) >= $maxWordlenght ){
                
    $string .= substr($word0, ($maxWordlenght-3)).'... ';
            }else{
                
    $string .= $word." ";
            }
        }
        return 
    $string;

    Verbesserungsvorschläge sind herzlich willkommen

    Roger

    Kommentar


    • #3
      Ich weiß nicht, ob ich das ganz richtig verstanden habe, aber wenn Du Dein Script _innerhalb_ des hrefs machst, dann kann Dir doch der Link egal sein und Du mußt nur das Wort kürzen.

      PHP-Code:
      $wort="Hallo, dies ist ein Text, der zu lang ist";

      //Buchstabenanzahl von $wort ermitteln, bei z.B. >10  alles nach 10 //Zeichen abschneiden = $wortkurz


      $wortneu=$wortkurz."... ";

      <a href=XXX> <?php echo $wortneu  ?> </a>
      Dann müßtest Dich um den HREF garnicht kümmern... vorausgesetzt, ich hab Dich nicht von vorne herein falsch verstanden!

      Kommentar


      • #4
        Hab mal n bißchen rumgesponnen: (ungetestet):


        PHP-Code:

        <a href="abc.de">
        <?PHP
        if((strlen($wort))>=10)
        {
        $nachrichtneu=substr($wort,0,10);
        $nachrichtneu=$nachrichtneu."...";
        echo 
        $nachrichtneu;
        }
        else
        {
        echo 
        $nachricht;
        }
        ?>
        </a>

        Ich würde es aber vielleicht so machen, daß die Zahl in der if-Anweisung ein wenig höher ist, als in der substr, damit nicht wegen ein Zeichen "..." angefügt wird...

        Kommentar


        • #5
          herzlichen Dank für deine Antwort,

          es geht mir darum aus einem langen String welcher aus Content und Links besteht die zu langen Wörter zu kürzen... troz^tzdem soll die link information beibehalten werden... dies war eigentlich mein Problem...

          Kommentar

          Lädt...
          X