kostenloser Webspace werbefrei: lima-city


wert zwischen zwei bestimmten zeichen in eine variable speichern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    garlian

    Kostenloser Webspace von garlian

    garlian hat kostenlosen Webspace.

    Hallo erstmal xD

    Also....
    Ein Beispiel:
    |a/tachen?/a|

    Jetzt möchte ich das der Wert zwischen |a/ und /a| in eine variable gespeichert wird, aber wie?
    Ich hab nix in Google dazu gefunden T.T
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Oh, Google findet dazu eine Menge Infos, allerdings muss man dazu wissen, wonach man sucht: PCRE, "Reguläre Ausdrücke", "Regex", usw.

    $eingabe = '|a/tachen?/a|';

    $rx = '/\|a\/(.*?)\/a\|/';
    if( !preg_match($rx, $eingabe, $rx_matches) ) die('Nix gefunden ...');

    $eine_variable = $rx_matches[1];


    http://regexp-evaluator.de/tutorial/

    http://www.php.net/manual/de/function.preg-match.php

  4. Autor dieses Themas

    garlian

    Kostenloser Webspace von garlian

    garlian hat kostenlosen Webspace.

    Super!
    Vielen Dank klappt wunderbar^^

    Jetzt bin ich ein wenig neugierig xD

    $rx = '/\|a\/(.*?)\/a\|/';

    Mich würde interessieren was die einzelnen Zeichen bedeuten(dick markiert).
  5. Hab ich mir fast gedacht ...
    Das ist immer das wirklich Schwierige an den RegEx-Teilen ...
    Das Erklären ...

    Erstmal gibts da einige Sonderzeichen, wenn man diese in einem RegEx einfach darstellen will, ohne dass sie eine Sonderfunktion haben, muss man denen einen Backslash voranstellen. In dem Fall hier sind das "/" und "|".

    Die "/" am Anfang und am Ende sind die so genannten RegEx-Begrenzer. Die bräuchte man in PHP eigentlich nicht, aber da wir hier mit Perl-kompatiblen Regulären Ausdrücken (PCRE) hantieren, müssen die eben sein (in Perl werden sie benötigt).

    $rx = '/\|a\/(.*?)\/a\|/';

    Das Geheimnis steht zwischen den runden Klammern (und die selbst gehören auch dazu):
    ".": ein beliebiges Zeichen (mit einigen Ausnahmen, die hier nicht so wichtig sind.
    "*": das vorangegangene Zeichen (oder eine Zeichenklasse) beliebig oft. Oder mathematisch ausgedrückt: 0-mal, 1-mal, ..., x-mal.

    "?": das Fragezeichen hat mehrere Bedeutungen. Hier heißt es: Nimm den kürzesten Teilstring, der auf das vorher angegebene Such-Muster (".*") passt. Die PCRE-Experten sagen dazu: Der Suchausdruck ist nicht gierig ("nongreedy").

    Der Rest davor und dahinter sind lediglich deine Begrenzungszeichenketten mit den passenden Backslashes versehen. Wenn du dir nicht sicher bist, ob du alle Sonderzeichen maskiert hast, kannst du auch preg_quote() dafür verwenden:


    $rx = preg_quote('|a/', '/') . // linker Begrenzer
    '(.*?)' . // der String, den wir suchen
    preg_quote('/a|', '/'); // rechter Begrenzer

    Bliebe noch das mit dem $rx_matches. Dort speichert preg_match() ein Array, dass die gefundenen Teilzeichenketten enthält. Geklammerte Ausdrücke findet man an Hand der Klammer-Nummer. Hier wäre das die Eins, weil der Ausdruck innerhalb der ersten runden Klammer steht.
    Das kannst du dir mit print_r($rx_matches) schön ansehen.
  6. Autor dieses Themas

    garlian

    Kostenloser Webspace von garlian

    garlian hat kostenlosen Webspace.

    Danke für diese Ausführliche Erklärung^^
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!