[PHP] Zeilenumbruch mit preg_split(); trennen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von furious1, 18. Juni 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 18. Juni 2010
    Zeilenumbruch mit preg_split(); trennen

    Hi,

    kurze Beschreibung: Habe ein Skript geschrieben, das zeilenweise Daten aus einer Textarea ausliest.

    Schema: Nachname;Vorname;E-Mail-Adresse

    Das Ganze funktioniert auf dem einen Webspace so wie es soll, auf einem anderen jedoch nicht. Da wird nach \r\n|\n nicht getrennt. An was kann das liegen? Haperts an einer Einstellung?

    Hier der Code:
    PHP:
    <? php

    error_reporting
    ( E_ALL );

    if(isset(
    $_POST [ 'submit' ])) {

        
    # VARIABLEN DEFINIEREN
        
    $aboliste_input  trim ( $_POST [ 'abos' ]);
        
    $aboliste  preg_split ( "/\r\n|\n/" $aboliste_input );
        
    # VARIABLEN DEFINIEREN

        
    if(!empty( $aboliste )) {

            foreach(
    $aboliste  as  $key ) {
                
    $array [] =  explode ( ';' $key );
            }

            
    $counter  count ( $array )- 1 ;

            for(
    $i = 0 ; $i <= $counter ; $i ++) {

                
    $abo_vorname  trim ( $array [ $i ][ 0 ]);   # Vorname
                
    if(empty( $abo_vorname )) {
                    
    $abo_vorname  'n/a' ;
                }

                
    $abo_nachname  trim ( $array [ $i ][ 1 ]);   # Nachname
                
    if(empty( $abo_nachname )) {
                    
    $abo_nachname  'n/a' ;
                }

                
    $abo_email  trim ( $array [ $i ][ 2 ]);   # E-Mail-Adresse
                
    if(empty( $abo_email )) {
                    
    $abo_email  'n/a' ;
                }

                echo 
    $abo_vorname . ', ' . $abo_nachname . ', ' . $abo_email . '<br />' ;

                unset(
    $abo_vorname $abo_nachname $abo_email );

            }

        } else {
            echo 
    'Keine Daten zum Einlesen vorhanden!' ;
        }

    } else {

        echo 
    '<form method="post" action=""><textarea name="abos" cols="60" rows="20"></textarea><input type="submit" name="submit" value="gogogo" /></form>' ;

    }

    ?>
    Zum Probieren:
    Spoiler
    Code:
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
    Testnachname1 ;Testvorname1 ;Testmail1@hoster.de 
     
  2. 18. Juni 2010
    AW: Zeilenumbruch mit preg_split(); trennen

    verwende explode("\n", ...) und wende auf die teile dann trim an(bzw das machst du ja eh...)

    PHP:
    <? php

    error_reporting
    ( E_ALL );

    if(isset(
    $_POST [ 'submit' ])) {

        
    # VARIABLEN DEFINIEREN
        
    $aboliste_input  trim ( $_POST [ 'abos' ]);
        
    $aboliste  explode ( "\n" $aboliste_input );
        
    # VARIABLEN DEFINIEREN

        
    if(!empty( $aboliste )) {

            foreach(
    $aboliste  as  $key ) {
                
    $array [] =  explode ( ';' $key );
            }

            
    $counter  count ( $array )- 1 ;

            for(
    $i = 0 ; $i <= $counter ; $i ++) {

                
    $abo_vorname  trim ( $array [ $i ][ 0 ]);   # Vorname
                
    if(empty( $abo_vorname )) {
                    
    $abo_vorname  'n/a' ;
                }

                
    $abo_nachname  trim ( $array [ $i ][ 1 ]);   # Nachname
                
    if(empty( $abo_nachname )) {
                    
    $abo_nachname  'n/a' ;
                }

                
    $abo_email  trim ( $array [ $i ][ 2 ]);   # E-Mail-Adresse
                
    if(empty( $abo_email )) {
                    
    $abo_email  'n/a' ;
                }

                echo 
    $abo_vorname . ', ' . $abo_nachname . ', ' . $abo_email . '<br />' ;

                unset(
    $abo_vorname $abo_nachname $abo_email );

            }

        } else {
            echo 
    'Keine Daten zum Einlesen vorhanden!' ;
        }

    } else {

        echo 
    '<form method="post" action=""><textarea name="abos" cols="60" rows="20"></textarea><input type="submit" name="submit" value="gogogo" /></form>' ;

    }

    ?> 
     
  3. 18. Juni 2010
    AW: Zeilenumbruch mit preg_split(); trennen

    Eventuell basiert das andere System nicht auf Unix-Basis und versteht mit Befehlen wie /r nix anzufangen und du musst was anderes nehmen.

    Andernfalls frage ich mich was der Part da sucht, den ich unten unterstrichen habe:

    \"r\n|\n"
     
  4. 18. Juni 2010
    AW: Zeilenumbruch mit preg_split(); trennen

    PHP:
    $aboliste  explode ( "\\r\\n" $aboliste_input );
    geht Danke dir!

    er soll nach \r\n oder nur \n trennen.
     
  5. 18. Juni 2010
    AW: Zeilenumbruch mit preg_split(); trennen

    explode("\r\n" ... sucht aber nur nach "\r\n", deswegen stand bei meinem code nur "\n" (das \r trim'mst du ja eh weg... )

    und dein code mit "\\r\\n" funktioniert eigl. überhaut nicht, weil es dann nach "\r\n" sucht (also so wie es da steht) und nicht nach chr(10) bzw chr(13)

    aber egal, solange es funktioniert
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.