[PHP/RegEx] Löschen des Reststrings ab einem bestimmten Zeichen innerhalb des Strings

chmee

verstaubtes inventar
Premium-User
Ich hab das kurz mal im Onlinetester durchgespielt, mit preg_replace würde man den Zeilenumbruch dazunehmen (was ich gerne als Suchzeichen vermeide). Jedenfalls muß man dem regex sagen, dass es Zeilenumbrüche als "normale" Zeichen interpretieren sollte - weiterhin bin ich auf preg_match ausgewichen und nehme den Fund [1]. Ich kann nicht sagen, ob es performancetechnisch einen Unterschied macht.
PHP:
$string="Dein string oben bla hier bla da
=
und das soll weg";
preg_match("#(.*)(=)(.*)#sU",$string,$ergebnis);
// Modifikatoren
// s für 'Zeilenumbruch als Zeichen interpretieren'
// U für 'Gier unterdrücken'
echo "<pre>"; var_dump($ergebnis); echo"</pre>";

echo "gesucht: <br/>".$ergebnis[1];

mfg chmee
 

chmee

verstaubtes inventar
Premium-User
Da wird Nix gelöscht, es wird nur Nix gefunden (Unterschied zwischen match und replace) ;) Ganz ehrlich, ohne ransetzen und ein bissel regex lernen wird es nur eine Mühsal, herauszufinden, warum es bei Dir nicht will. Also, ausprobieren, rumtesten und es selbst herausfinden. sry.

mfg chmee
 

Geordi

Mitglied
Naja, trotzdem erstmal danke.
Aber das preg_match("#(.*)=(.*)#su",$Meldung,$Meld); nix bringt sieht man ja schon, wenn man meinen Text und die RegEx in den Onlinetester reinwirft und guckt was kommt.
 

chmee

verstaubtes inventar
Premium-User
Benutzt Du den Onlinetester richtig? Bei mir gehts.

Text oben rein
als Suchmuster (.*)(=)(.*)
und Modifikatoren links s und U ein Häkchen setzen (sry, oben hatte ich ein kleines u)
nicht nötig, aber wenn Du willst links auch den Delimiter auf Raute stellen..

(Bei Outputoptionen einfach noch "Rexexp Beispiel zeigen" Häkchen setzen, dann hast Du Deinen php-code)

mfg chmee
 

karla50

Grünschnabel
Hallo,
habe das auch mal probiert mit folgendem Code:
$artikelnummer[$i]=preg_replace("#,.*#","",$artikel[$i]);
Also: Lösche alles nach dem ersten Komma incl. dem Komma.

Mein String sieht so aus:
[0] = 12, Artikel -Text - Preis
[1] = 27, Artikel - Text - Preis
[2] = 17, Artikel - Text - Preis

Ergebnis müsste ja sein:
[0] = 12
[1] = 27
[2] = 17

Allerdings sieht es so aus:
[0] = 12
[1] = 2
[2] = 1

Der gibt mir beim 2. String und allen weiteren nur die erste Zahl aus. Der Rest wird leider nicht ausgegeben.
Kann mir jemand sagen woran das liegt?
 

Yaslaw

n/a
Moderator
Ungetestet, sollte es auch so gehen:
Deine Logikk umgekehrt. Nimm vom Anfang des Strings alle Ziffern.

PHP:
$artikelnummer[$i] preg_replace('/^(\d+)/', '$1', $artikel[$i]);
 

Neue Beiträge