[PHP] String schneiden: Problem mit HTML Zeichen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Hapablap, 11. Juni 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 11. Juni 2009
    String schneiden: Problem mit HTML Zeichen

    Hi,

    Ich hab ein Problem mit meiner String Kürzung. Undzwar kürze ich zu lange Strings und hänge "..." hinten an. Funktioniert super, ist ja auch einfach, nur leider kommt was blödes raus, wenn es bei einem Quote gekürzt wird, da es mir " z.B. vor dem Strichpunkt schneidet und dann hab ich keinen Text "mein Text"... oder "mein Text... sondern "mein Text&quot...

    Weiß jemand, was man dagegen tun kann?
    Habs mit regulären Ausdrücken (^([&][a-z]*)$) versucht, aber das Problem ist, es erkennt nur &quot, aber nicht string&quot, also wenn direkt davor etwas ohne Leerzeichen steht.

    Hier mein Script, ganz simpel:
    PHP:
    if( strlen ( $text ) >  35 )
    {
        
    $text substr ( $text 0 35 ) .  "..." ;
    }
    Danke schon mal!
    Hapablap
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    Ich würde einfach die 5 letzten Zeichen prüfen, ob ein '&' darin enthalten ist. Wenn ja, schaust du, ob danach ein ';' kommt. Wenn nicht, schneidest du vor dem '&' bzw. nach dem nächsten ';' ab, ganz wie du willst.
     
  4. #3 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    Konvertiere die HTML-Entities doch einfach mit html_entity_decode wieder zurück in's ursprüngliche Zeichen bevor du den String bearbeitest.
     
  5. #4 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    PHP:
    <? php 
    $string 
    "zu lang &quot;" ;

    $check  strpos ( $string "&quot;" );

    if(
    $check  ==  TRUE ) {
      
    $string  str_replace ( "&quot;" "" $string );
        if(
    strlen ( $string ) >  1 ) {
          
    $text substr ( $string 0 10 ) .  "&quot;..." ;
        }
    } else {
        if(
    strlen ( $string ) >  1 ) {
          
    $text substr ( $string 0 10 ) .  "..." ;
        }
    }

    echo 
    $text ;

    ?>
    Hier nen Ansatz..
    Hab keinen Nerv mehr weiterzumachen^^
    Aber so inner Art könntest dus machn
     
  6. #5 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    PHP:
    <? php

    function  html_cut ( $html $length $suffix ) {
        
    $split  preg_split ( '~(<[^>]+>|&(?:[a-z]+|#[0-9]+);)~' $html , - 1 PREG_SPLIT_DELIM_CAPTURE );
        if((
    $l  count ( $split )) >  0 ) {
            
    $count  0 ;
            
    $tagStack  = array();
            
    $result  '' ;
            for(
    $i  0 $i  $l $i ++) {
                switch(
    true ) {
                    case ((
    $i  2 ) ==  0 ):
                        if((
    $count  += ( $cl  strlen ( $split [ $i ]))) >=  $length ) {
                            if(
    $count  $length )
                                
    $split [ $i ] =  substr ( $split [ $i ],  0 $cl  - ( $count  $length ));
                                
                            
    $result  .=  $split [ $i ];
                            break 
    2 ;    
                        }
                        
                        
    $result  .=  $split [ $i ];
                        break;
                    case (
    substr ( $split [ $i ],  0 1 ) ==  '&' ):
                        if((
    $count  +=  1 ) >  $length ) break  2 ;
                        
    $result  .=  $split [ $i ];
                        break;
                    case (
    substr ( $split [ $i ],  1 1 ) ==  '/' ):
                        
    array_pop ( $tagStack );
                        break;
                    case (
    substr ( $split [ $i ], - 2 1 ) !=  '/' ):
                        
    $tagStack [] =  substr ( $split [ $i ],  , - 1 );
                    default:
                        
    $result  .=  $split [ $i ];
                }
            }
            
            foreach(
    array_reverse ( $tagStack ) as  $tag
                    
    $result  .=  '</'  $tag  '>' ;
            
            return 
    $result  $suffix ;
        }
        
        return (
    strlen ( $html ) >  $length
            ? 
    substr ( $html 0 $length ) .  $suffix 
            
    $html ;
    }

    print 
    html_cut ( '<strong>hallo welt</strong><em><img src="foo" alt="" />&amp;hallo</em>' 12 '...' );
    ?>
    sollte klappen (hab a weng rumprobiert)
     
  7. #6 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    Super Methode! Hat grad in einem Test funktioniert, aber wieso geht das hier nicht??
    PHP:
    html_cut ( 'Sollen sog. &quot;Killerspiele&quot; verboten werden?' 35 '...' )
    Das ist nämlich mein reeller Problemfall ^^

    Edit:

    Wow mit html_entity_decode klappts! Also danke an alle, aber ich lass mal offen, falls Murdoc noch was zur Methode sagen will. Ansonsten close ich demnächst. Die Methode sieht nämlich ganz gut aus ^^
    Echt vielen dank!
     
  8. #7 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    fixxed, hatte html-entities vergessen
     
  9. #8 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    Wieso benutzt du nicht wordwrap ?
     
  10. #9 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    Super! Danke, ich bin echt begeistert ... !

    - closed -
     
  11. #10 11. Juni 2009
    AW: String schneiden: Problem mit HTML Zeichen

    weil html-entities und html-tags gezählt werden, was im resultat fehlerhaft wäre.
     

  12. Videos zum Thema
Die Seite wird geladen...
Similar Threads - PHP String schneiden
  1. Antworten:
    4
    Aufrufe:
    1.017
  2. Antworten:
    6
    Aufrufe:
    1.145
  3. Antworten:
    3
    Aufrufe:
    1.252
  4. Antworten:
    10
    Aufrufe:
    1.065
  5. [PHP] String zerschneiden

    JoE THE , 28. September 2009 , im Forum: Webentwicklung
    Antworten:
    6
    Aufrufe:
    426
  • Annonce

  • Annonce