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
1234567891011121314151617181920212223242526272829303132<?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