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

micha

Erfahrenes Mitglied
Hallo liebe PHPler,

ich habe eine Variable, die nach dem Muster

$variable = "teilstringa, teilstringb";
oder
$variable = "teilstringa/teilstringb";

aufgebaut ist.
Ich möchte nun über Regexpressions (glaube preg_xxxx ist die Function, die ich suche) die Variable auf Enthaltensein des Zeichens "," oder "/" checken und dann ab dem Zeichen (also inklusive des Zeichens meine ich) alles entfernen.

aus
$variable = "teilstringa, teilstringb"; // Komma auch durch "/" ersetzbar
würde dann
$variable = "teilstringa";

Meiner Vermutung nach benötige ich dazu preg_replace. Aber wie sage ich dem Parser, dass er ab und inklusive des Kommas oder dem Slash alles löschen soll?
 
Zuletzt bearbeitet:
Ich teste das gerade mal durch:

$string = preg_replace("#[,|/].*#,"",$string);
muss ersetzt werden durch:
preg_replace('[,|/].*,"",$slashkommaweg')

dann gehts

netter Geekcode übrigens :D
habe ich schon seit Jahren nichtmehr gesehen im Internet.

War doch mal in den 90ern total "in" oder ?


// edit, Danke vergessen !

// Edit2

Ebenfalls sollte de Parser am Vornamen einen ggf. vorhandenen Punkt "." also
$variable = "Müller, N.";
entfernen. Da bekomme ich jedoch immer die Fehlermeldung "Missing Delimiter"
Hier der Code:
PHP:
$tut = "W.";
$hupe = preg_replace ("/./","",$tut);
echo $hupe;
//Ausgabe: Error : Missing Delimiter 
//Erwartete Ausgabe: W
 
Zuletzt bearbeitet:
Code:
<?php
$tut = "W.";
$hupe = preg_replace ("/\./","",$tut);
echo $hupe;
?>

Der Punkt muss escaped werden - allerdings sollte die str_replace() Funktion hier schneller aggieren (Laufzeit des gesamten Scripts).

sB!
 
Hallo zusammen,
ich versuche das gerade mit = Zeichen hinzubekommen, also alles nach = soll gelöscht werden, inkl. dem =
Leider funktioniert das so wie angegeben nicht :(

PHP:
preg_replace("#[=].*#","",$Meldung)

Dabei werden nur die = jedoch nicht der nachfolgende Text gelöscht!
Wo steckt der Fehler?

Danke schonmal für die Hilfe!
 
Zuletzt bearbeitet:
Warum die eckigen Klammern? Wenn ich es im Regexonlinetester ausprobiere, komme ich mit preg_replace und =.* direkt über Ziel und nehme 4000 ein :)
PHP:
$string="chmee=phreekz";
$ergebnis=preg_replace("#=.*#","",$string);
echo $ergebnis;
// Ausgabe chmee
mfg chmee
 
Hm, hätte ich erwähnen sollen, das in dem Text der da reinkommt, auch noch Umbrüche drinn sind?
Folgender Text würde reinkommen:
WUEM72 MKXX 190850

Amtliche UNWETTERWARNUNG vor STARKEM SCHNEEFALL

für den Märkischen Kreis

gültig von: Sonntag, 19.12.2010 13:00 Uhr
bis: Sonntag, 19.12.2010 21:00 Uhr

ausgegeben vom Deutschen Wetterdienst
am: Sonntag, 19.12.2010 09:50 Uhr

Von Südwesten kommen am frühen Nachmittag starke Schneefälle auf. Bis zum Abend werden 10 bis 15 cm Schnee erwartet.
Nachfolgend klingt der Schneefall ab.

ACHTUNG! Hinweis auf mögliche Gefahren:
Straßen können stellenweise unpassierbar sein. Bäume können unter der Schneelast zusammenbrechen.
Vermeiden Sie alle Autofahrten!
Fahren Sie nur mit Winterausrüstung!

DWD / RZ Essen
=


===============================================
Hinweis:
Etwaige Verspätungen in der Zustellung der Email aufgrund technischer Probleme des Netz- oder Knotenbetreibers liegen nicht in der Verantwortung des DWD!

Sie können diesen Newsletter über die Webseite http://www.dwd.de/bvbw/appmanager/b...wetter_warnungen_Newsletter_Unwetterwarnungen
zu jeder Zeit wieder abbestellen.

Und da klappt das leider wieder nicht :(
 
Zuletzt bearbeitet:
Dann musst du noch den Modifikator "m" mit einbauen (multiline):

PHP:
$string="Geht über 
=
mehrere
Zeilen ";
$ergebnis=preg_replace("/=.*/m","",$string);
echo $ergebnis;
 
Hm, erzielt auch nicht den gewünschten Erfolg.
Dabei kommt raus:
WUEM72 MKXX 190850

Amtliche UNWETTERWARNUNG vor STARKEM SCHNEEFALL

für den Märkischen Kreis

gültig von: Sonntag, 19.12.2010 13:00 Uhr
bis: Sonntag, 19.12.2010 21:00 Uhr

ausgegeben vom Deutschen Wetterdienst
am: Sonntag, 19.12.2010 09:50 Uhr

Von Südwesten kommen am frühen Nachmittag starke Schneefälle auf. Bis zum
Abend werden 10 bis 15 cm Schnee erwartet.
Nachfolgend klingt der Schneefall ab.

ACHTUNG! Hinweis auf mögliche Gefahren:
Straßen können stellenweise unpassierbar sein. Bäume können unter der
Schneelast zusammenbrechen.
Vermeiden Sie alle Autofahrten!
Fahren Sie nur mit Winterausrüstung!

DWD / RZ Essen




Hinweis:
Etwaige Verspätungen in der Zustellung der Email aufgrund technischer
Probleme des Netz- oder Knotenbetreibers liegen nicht in der Verantwortung
des DWD!

Sie können diesen Newsletter über die Webseite
http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop/?_nfpb
_dwdwww_wetter_warnungen_Newsletter_Unwetterwarnungen
zu jeder Zeit wieder abbestellen.

Es werden also alle = entfernt, jedoch nicht der nachfolgende Text.

Syr, das ich so oft nachfragen muss, aber von RegEx hab ich leider fast keine Ahnung :(
 
Zurück