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
- 2733 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
akkor mar inkabb trim();
t
- A hozzászóláshoz be kell jelentkezni
A vége valszeg az lesz.
Csekélységem előbb szereti tudni, hogy milyen bemenettel dolgozik, az miért olyan, és milyen lehet neaggyisten még, ha nem egyszeri a feldolgozás.
- A hozzászóláshoz be kell jelentkezni
Vagy tedd aposztrófok közé a $mobil_pattern értékét, vagy a plusz jel elé tegyél két backslash-t.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Vagy tenyleg volt a sorok vegen egy space is. Kulonben mindegy, a trim a CR/LF/space/TAB karaktereket trimmeli.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni