preg_match őrület

Sziasztok!

Text file-ból importálok telefonszámokat. Pl a mobil formátum a következő: +36-20-2345678. Az ellenőrzésre ezt a regex-et használom: "/^\+36-[2,3,7]0-[2-9][0-9]{6}$/"
Erre van is egy működő script, szépen szűri. Ennek alapján írtam egy másik scriptet (1 másik projecthez), ugyanúgy text file-ból olvas, ugyanolyan formátumot vár, ugyanúgy ellenőriz, DE! nem engedi át a helyes mobilszámokat. A scriptből ezeket íratom ki:

$mobil_pattern = "/^\+36-[2,3,7]0-[2-9][0-9]{6}$/";
preg_match($mobil_pattern, $telefonszam, $matches, PREG_OFFSET_CAPTURE,0);
print_r($matches);
echo $telefonszam;
echo $mobil_pattern;

Erre az output:

Array ( )
+36-20-7782198
/^\+36-[2,3,7]0-[2-9][0-9]{6}$/

És ugyanez a telefonszám a működő scripttel:

Array ( [0] => Array ( [0] => +36-20-7782198 [1] => 0 ) )
+36-20-7782198
/^\+36-[2,3,7]0-[2-9][0-9]{6}$/

PHP 5.2.6 windows-on, Apache 2.2.4

Ötletek?

Köszi a segítséget,
bandorka

Hozzászólások

Első sugallatként hagyd le a '$' jelet a regexp végéről. Ha úgy átenged, csekkold, hogy mi van a mezők végén.

Amúgy a felsorolt karakterlistákba nem kell ',' - az így a lista eleme lesz.

Vagy tedd aposztrófok közé a $mobil_pattern értékét, vagy a plusz jel elé tegyél két backslash-t.

Köszönöm a gyors választ mindenkinek. Megoldódott.
A működő script egyből táblába tette a text-et. A nem működőnél pedig soronként kellett beolvasnom a textből, aztán "insert into". Annak ellenére, hogy még a SELECT '.' + phone_number + '.' AS Expr1 FROM tabla eredménye sem mutatja azt, hogy a mező végén ott egy space, mégis ott van. Átírtam az insert-et úgy, h trim(mezonev) értékkel tegy be és egyből megjavult. Tehát itt volt a hibuka.
Akkor most mssql suck, vagy nem értek hozzá eléggé, vagy az LF-et a sor végén (fgets-el olvasok) space-re konvertálja a php?
Vagymi?

bandorka