preg_split Pattern
Phil
- php
0 Phil1 dedlfix1 Vinzenz Mai
0 Vinzenz Mai
Hallo Zusammen
Ich scheitere wieder einmal an preg_split und dem dazugehörigen Pattern.
Ich habe folgenden Code, der meinen String beim Vorkommen von < oder > in ein Arry zerlegt.
$split = preg_split('[<>]', $zeile->text);
Meine Frage ist eigentlich ganz leich, wie erweitere ich die Pattern damit der String nur bei <? und ?> geteilt wird? (also nur teilen wenn <? oder ?> in Folge sind)
Danke für Eure Hilfe. Grüsse, Philipp
F¨ür alle die auch eine Antwort auf diese Frage suchen, ich beantworte meine Frage gleich selbst.
$split = preg_split('/[<?][?>]/', $zeile->text);
Sorry guys!
Hi!
Für alle die auch eine Antwort auf diese Frage suchen, ich beantworte meine Frage gleich selbst.
$split = preg_split('/[<?][?>]/', $zeile->text);
Dein Muster passt nun auf <?, ?>, ?? und <>, ist also noch nicht die Antwort, denn du möchtest <? oder/alternativ ?>, was sich als /<?|?>/ notieren lässt.
Lo!
Hallo dedlfix,
Dein Muster passt nun auf <?, ?>, ?? und <>, ist also noch nicht die Antwort, denn du möchtest <? oder/alternativ ?>, was sich als /<?|?>/ notieren lässt.
muss man hier das Fragezeichen nicht maskieren?
Freundliche Grüße
Vinzenz
Hi!
[...] was sich als /<?|?>/ notieren lässt.
muss man hier das Fragezeichen nicht maskieren?
Ja natürlich, das hat ja eine Sonderbedeutung, nur nicht innerhalb der Zeichenklasse, in der es ursprünglich stand. Danke fürs Aufpassen.
Also so: /<?|?>/
Lo!
Hallo zusammen
Danke für die Korrektur meines Fehlers. Solche Pattern sind ziemlich schwer zu verstehen... vielen Dank für die Hilfe! Grüsse!
Hallo Phil,
Für alle die auch eine Antwort auf diese Frage suchen, ich beantworte meine Frage gleich selbst.
$split = preg_split('/[<?][?>]/', $zeile->text);
sorry, das ist nicht die Antwort auf diese Frage. Vergleiche dazu meine Anmerkungen. Testen wir's:
$text = "Anfang<?ppp??xxx?>zzz";
echo "<h1>Phils Vorschlag:</h1>\n";
$phil = '/[<?][?>]/';
$split = preg_split($phil, $text);
echo "<pre>\n";
htmlspecialchars(var_dump($split));
echo "</pre>\n";
echo "<h1>Mein Vorschlag:</h1>\n";
$vinzenz = '/<\?|\?>/';
$split = preg_split($vinzenz, $text);
echo "<pre>\n";
htmlspecialchars(var_dump($split));
echo "</pre>\n";
Ausgabe:
Phils Vorschlag:
array(4) {
[0]=>
string(6) "Anfang"
[1]=>
string(3) "ppp"
[2]=>
string(3) "xxx"
[3]=>
string(3) "zzz"
}
Mein Vorschlag:
array(3) {
[0]=>
string(6) "Anfang"
[1]=>
string(8) "ppp??xxx"
[2]=>
string(3) "zzz"
}
Freundliche Grüße
Vinzenz
Hallo,
Ich scheitere wieder einmal an preg_split und dem dazugehörigen Pattern.
Ich habe folgenden Code, der meinen String beim Vorkommen von < oder > in ein Arry zerlegt.
$split = preg_split('[<>]', $zeile->text);
Du verwendest hier eine Zeichenklasse für die beiden Zeichen
<
>
Meine Frage ist eigentlich ganz leich, wie erweitere ich die Pattern damit der String nur bei <? und ?> geteilt wird? (also nur teilen wenn <? oder ?> in Folge sind)
nun suchst Du die Alternativen
<?
?>
http://de.selfhtml.org/perl/sprache/regexpr.htm#alternativen@title=Alternativen trennst Du mit |, dem Pipe-Symbol,
das Fragezeichen hat in regulären Ausdrücken eine besondere Bedeutung, deswegen musst Du es http://de.selfhtml.org/perl/sprache/regexpr.htm#maskierung@title=maskieren.
Reguläre Ausdrücke sind zu begrenzen. Oft wird der Slash als Begrenzerzeichen verwendet.
Mit diesen Angaben müsstest Du Dein Muster hinbekommen.
Wenn nicht, schreibe bitte, was Du versucht hast und woran Du hängengeblieben bist.
Freundliche Grüße
Vinzenz