kostenloser Webspace werbefrei: lima-city


String zerlegen mit Trenner?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mybox

    mybox hat kostenlosen Webspace.

    Hallo

    wie kann ich mit PHP einen String so zerlegen, dass ich aus dem ursprünglichen String nur den Teil heraus bekomme, der zwischen dem letzten und dem vor-letzen Vorkommen eines bestimmten Zeichens steht ?

    Das Trenn-Zeichen ist dabei z.B. ein Pipe Zeichen: |

    Bsp:
    Dieser Text ist ein Beispiel | einfach mal so | und keiner weiss warum | nichmal der Autor


    da raus holen:
    und keiner weiss warum


    soll ich den String per explode() zerlegen oder ein preg_match() nehmen ?
    was ist besser ... und wi würde es mit preg_match() aussehen ?

    Danke.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. willstdueswissen

    Kostenloser Webspace von willstdueswissen

    willstdueswissen hat kostenlosen Webspace.

    Also ich würde erstmal ein explode nehmen:
    $str = "Dieser Text ist ein Beispiel | einfach mal so | und keiner weiss warum | nichmal der Autor";
    $splitstr = explode(" | ", $str);
    echo $splistr[count($splistr)-2];


    mit preg_replace/match sieht des ganze schwerer aus.
    Ich guck mal ob ich gleich noch Zeit finde die da etwas zusammen zu basteln.

    MfG willstdueswissen
  4. Hallo mybox,

    mit explode() könntest du es auf diese Weise machen.

    <?php
    $text = 'Dieser Text ist ein Beispiel | einfach mal so | und keiner weiss warum | nichmal der Autor';
    $split = explode(' | ', $text);
    $count = count($split);
    $count = $count - 2;
    // Es gibt 4 Teile, da Php bei 0 anfängt zu zählen, und da du das vorletzte willst -2
    
    echo $split[$count];
    ?>


    Beitrag zuletzt geändert: 30.3.2015 10:25:17 von atraxoo
  5. Spar dir den Stress mit explode und Regechsen: str_getcsv mit "|" als Delimiter.
  6. Autor dieses Themas

    mybox

    mybox hat kostenlosen Webspace.

    Hallo

    Danke .... ja ob jetzt explode oder str_getcsv macht wohl wenig unterschied, oder ?!
    ... beides zerlegt den String in identisches (gleiches) Array

    mein Test so: .... siehe hier: http://phpfiddle.org/main/code/6jhs-bj2r

    <?php
    // ------------------------------------------------------------ 
    
    $strg = 'Dieser Text ist ein Beispiel | einfach mal so | und keiner weiss warum | nichmal der Autor'; 
    
    $temp1 = explode('|',$strg); 
    $newstr1 = trim( $temp1[count($temp1)-2] );
    
    $temp2 = str_getcsv($strg,'|'); 
    $newstr2 = trim( $temp2[count($temp2)-2] );
    
    // ------------------------------------------------------------ 
    
    print '<br />'."\n"; 
    print '<br /> 1. mit explode() ... <span style="background:#FFFFAA;">'.$newstr1.'</span>'."\n"; 
    
    print '<pre style="margin:18px 4px; padding:6px; text-align:left; background:#DEDEDE; color:#000099;">'."\n"; 
    print_r($temp1)."\n"; 
    print '</pre>'."\n"; 
    
    print '<br />'."\n"; 
    print '<br /> 2. mit str_getcsv() ... <span style="background:#FFFFAA;">'.$newstr2.'</span>'."\n"; 
    
    print '<pre style="margin:18px 4px; padding:6px; text-align:left; background:#DEDEDE; color:#000099;">'."\n"; 
    print_r($temp2)."\n"; 
    print '</pre>'."\n"; 
    
    print '<br />'."\n"; 
    print '<br />'."\n"; 
    
    // ------------------------------------------------------------ 
    ?>



    zumindest das Ergebnis ist genau das gleiche,

    <br />
    <br /> 1. mit explode() ... <span style="background:#FFFFAA;">und keiner weiss warum</span>
    <pre style="margin:18px 4px; padding:6px; text-align:left; background:#DEDEDE; color:#000099;">
    Array
    (
        [0] => Dieser Text ist ein Beispiel 
        [1] =>  einfach mal so 
        [2] =>  und keiner weiss warum 
        [3] =>  nichmal der Autor
    )
    </pre>
    <br />
    <br /> 2. mit str_getcsv() ... <span style="background:#FFFFAA;">und keiner weiss warum</span>
    <pre style="margin:18px 4px; padding:6px; text-align:left; background:#DEDEDE; color:#000099;">
    Array
    (
        [0] => Dieser Text ist ein Beispiel 
        [1] =>  einfach mal so 
        [2] =>  und keiner weiss warum 
        [3] =>  nichmal der Autor
    )
    </pre>
    <br />
    <br />


    ... keine Ahnung was Performance (Laufzeit / CPU Nutzung) angeht ..
    ob da jetzt explode() oder str_getcsv() schneller / sparsamer ist ?!?


    EDIT .... phpfiddle ist ja g0iL .. :=) :prost: .... :approve: .... :thumb:

    Beitrag zuletzt geändert: 30.3.2015 14:40:31 von mybox
  7. Sicher, aber wenn du komplexere Strings hast, wirds tricky. Z.B. wenn du im String "|" hast. ;)
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!