String zerlegen mit Trenner?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
array
basteln
beispiel
bestimmten zeichens
code
dank
ergebnis
identisches gleiches array
komplexere strings
laufzeit
machen
nehmen
performance
string
teil
text
url
zeichen
zerlegen
-
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.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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 -
Spar dir den Stress mit explode und Regechsen: str_getcsv mit "|" als Delimiter.
-
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 .. :=) .... ....
Beitrag zuletzt geändert: 30.3.2015 14:40:31 von mybox -
Sicher, aber wenn du komplexere Strings hast, wirds tricky. Z.B. wenn du im String "|" hast. ;)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage