PHP RegEx in PHP / ich weiß ich weiß...

Paladin-HH

Ensign
Registriert
Okt. 2005
Beiträge
205
... ich sollte mich in das Thema einarbeiten und VERSTEHEN was ich tue und nicht so FAUL sein, Google oder das CB-Forum zu bemühen sondern mir SELBER die Fähigkeiten anlegen, MEINE Probleme SELBER zu lösen.

ABER: ich mache das nur zum Spaß und helfe eine Freund der noch weniger Ahnung hat...

Meine Frage: ich habe einen String (eine URL) und möchte für den Fall, dass in dem String ein "-in-" vorkommt, den Begriff davor und danach extrahieren.

Beispiel: die URL ist "bla.de/idioten-in-stuttgart" oder "bla.de/idioten-in-stuttgart?quer" oder "bla.de/idioten-in-stuttgart/xyz"

Ich brauche die Info, ob das "-in-" im Query ist und ich brauche die Variablen mit "idioten" und "stuttgart"

Dank im Voraus für jeden der sich erbarmt mir zu helfen :schluck:
 
PHP:
preg_match("/([a-zA-Z]+)-in-([a-zA-Z]+)/", "bla.de/idioten-in-stuttgart?quer", $matches);

var_dump($matches);
array(3) {
  [0]=>
  string(20) "idioten-in-stuttgart"
  [1]=>
  string(7) "idioten"
  [2]=>
  string(9) "stuttgart"
}

Wozu überhaupt ein Regex?
Geht am einfachsten und ist doch genau für sowas da
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Paladin-HH
  • Gefällt mir
Reaktionen: [n]ARC und abcddcba
Um zu Prüfen ob der RegEx richtig ist, kann man das hier sehr gut testen:
https://regex101.com/

Falls man sich nichts installieren möchte.
 
  • Gefällt mir
Reaktionen: BeBur
/(\w+)-in-(\w+)/, siehe regex101.com für die Erklärung und was genau dann ein match ist.
Explode geht hier sicher auch. Aber regex lernen ist genau so cool und praktisch wie qualvoll :D.

xkcd.com
regular_expressions.png
 
Wieso Regex für sowas?
Wurde ja schon von @benneq erwähnt, aber mit strstr($url, "-in-") gucken ob in der URL ein "-in-" vorkommt und dann $parts = explode("-in-", $url) auf "-in-".
Dann bekommt du den vorderen Teil in Index 0 und den hinteren Teil in Index 1 (und alle weiteren "-in-"-Teile).

Regex lernen sollte man auf jeden Fall, aber bei Aufgaben die man ohne lösen könnte würde ich Abstand von Regex halten.
In nem Hobby-Projekt machts keinen großen Unterschied. Aber Regex ist teuer, und je nach Eingabe kann Regex noch viel teurererer werden.
Nur weil Java auf allen Plattformen läuft ist es nicht für alle Ansprüche die richtige Wahl, gilt genauso für Regex ;)
 
Vielleicht vorher die URL noch per parse_url() zerlegen und dann strstr() (s.o.) auf path im Ergebnis anwenden.

PHP:
$url1 = parse_url("https://bla.de/idioten-in-stuttgart?quer");
print_r($url1);

$url2 = parse_url("https://bla.de/idioten-in-stuttgart/xyz");
print_r($url2);
Code:
Array
(
    [scheme] => https
    [host] => bla.de
    [path] => /idioten-in-stuttgart
    [query] => quer
)
Array
(
    [scheme] => https
    [host] => bla.de
    [path] => /idioten-in-stuttgart/xyz
)
 
  • Gefällt mir
Reaktionen: BeBur und Hayda Ministral

Ähnliche Themen

Zurück
Oben