Jens Marder: preg_match unverständlich

moin moin,

leider habe ich immernoch das Problem mit preg_match.
was mache ich falsch, dass a nicht als false erkannt wird?
Hier mal der Code:

______________________________________________________

<?php
$test = "4,a6";

$laenge = strlen($test);

echo "test: $test<br /><br />";
echo "laenge: $laenge<br /><br />";
for ($i=0;$i<$laenge;$i++)
{
  $zeichen = substr ($test, $i, 1);
  echo "zeichen: $zeichen<br />";
  $tmp = preg_match("/[1]||.||,$/",$zeichen);
  echo "status: $tmp<br /><br />";
}
?>
_______________________________________________________

Beim Ausführen sieht man, dass preg_match das a als ([0-9]||,||.) erkennt.
Kann mir das wer erklären?

mit verzweifelnden Grüßen


  1. 0-9 ↩︎

  1. Hallo Jens Marder,

    Beim Ausführen sieht man, dass preg_match das a als ([0-9]||,||.) erkennt.

    Ich habe zwar keine Ahnung von PHP, aber in Regulären Ausdrücken heißt der Punkt (unmaskiert) ein beliebiges Zeichen, also auch ein "a". Maskierst du den Punkt mit einem Backslash, also ".", sollte es funktionieren.

    Grüße
    Torsten

    1. Hallo Torsten,

      So spät noch auf?! Jetzt aber marsch ins Bett, sonst jammerst du morgen (heute?) wieder, dass du so müde bist...

      *SCNR*, gäääähn! und gute Nacht,

      der David Schneider

      1. Hallo David,

        So spät noch auf?!

        Wieso? Ist doch noch früh am Abend ;-)

        Jetzt aber marsch ins Bett, sonst jammerst du morgen (heute?) wieder, dass du so müde bist...

        Ich jammere nicht, ich schildere nur Tatsachen *g*

        *SCNR*, gäääähn! und gute Nacht,

        Dito.

        Torsten

    2. Hallo,

      Maskierst du den Punkt mit einem Backslash, also ".", sollte es funktionieren.

      Habe den Punkt nun maskiert und leider hat sich nichts verändert. :(

      mvg

      1. Hallo Jens Marder,

        Maskierst du den Punkt mit einem Backslash, also ".", sollte es funktionieren.
        Habe den Punkt nun maskiert und leider hat sich nichts verändert. :(

        Mach doch einfach eine Zeichenklasse draus: "[1]$". Ansonsten könnte sich allerdings auch ein Fehler in deinen PHP-Code eingeschlichen haben, aber da bin ich leider der falsche Ansprechpartner.

        Grüße
        Torsten


        1. 0-9., ↩︎

        1. Hallo nochmal,

          es scheint jetzt wirklich zu funzen - die Lösung sieht so einfach aus...*den Wald vor lauter Bäumen nicht sehen?*

          Vielen Dank auf jeden Fall,
          frohe Restweihnachten.

          Perlprogrammierer?

          1. Hallo Jens,

            Perlprogrammierer?

            Nur für den Hausgebrauch ;-)

            Grüße
            Torsten