Autor Zpráva
hugo123
Profil *
Ahojte,

prosim, ako spravim v PHP kontrolu, ze zadany string obsahuje len male alebo VELKE pisme abecedy, alebo cisla alebo pomlcku?

Vopred dakujem velmi pekne!

Moderátor Chamurappi: Jak to souvisí s webovými prohlížeči? Přesouvám.
juriad
Profil
echo preg_match("/^[a-zA-Z0-9-]*$/", "vyh0v-ujE");
echo preg_match("/^[a-zA-Z0-9-]*$/", "(ne*vy*ho*VU*je)");
hugo123
Profil *
juriad:
skvele, ale este by som chcel povolit znak lomitka na tuto stranu: "/"
ked to tam pridam, tak vypisuje errory.

Ako to prosim vyriesit?

Vopred dakujem velmi pekne.
juriad
Profil
Do hranatých závorek připiš to lomítko; ale na konci musí zůstat pomlčka, protože ta má zvláštní význam (rozsah znaků).
Navíc, jelikož je oddělovač lomítko, musíš ho escapovat zpětným lomítkem. Nebo změnit oddělovač.
Regulární výraz bude:
"/^[a-zA-Z0-9\\/-]*$/"
nebo
"#^[a-zA-Z0-9/-]*$#"

Nikdy nezakládej duplicity; to že ti nikdo chvíli neodpovídá, vůbec neznamená, že se odpovědi nedočkáš.


Na otázku položenou v duplicitním vlákně:
proč projde i "vyh0v-ujE12/3\132"?
odpovím odkazem do dokumentace: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double
lomítko následované třemi číslicemi se vyhodnotí jako příslušný ASCII znak (123 = Z)
Důkaz:
echo "vyh0v-ujE12/3\132";
echo "vyh0v-ujE12/3\\132";
Pro zapsání znaku zpětného lomítka ho musíš uvést dvakrát za sebe.
hugo123
Profil *
juriad:
dakujem velmi pekne.

Ako to technologicky dokazem, ked mam v texte "aaaaa\bbbb", takto automaticky interretujem do "aaaaa\\bbbb"? Je na to nejake specialny php prikaz?

A toto plati iba pre tento typ lomitka? U toho druheho to neplati?

Vopred dakujem velmi pekne.
juriad
Profil
Ta uvedená pravidla v dokumentaci se týkají pouze řetězců přímo uvedených ve zdrojáku PHP.
Jde jen o způsob jak zapsat v PHP řetězec obsahující speciální znaky (nový řádek, tabulátor apod.).
PHP nerozezná od sebe "Z" a "\123", nevidí mezi těmito zápisy žádný rozdíl.
Z toho vyplývá, že žádný příkaz k tomu neexistuje, ani existovat nemůže.

Když načítáš řetězec z databáze, souboru nebo ti přijde jako požadavek po síti, nemusíš nic řešit.

Ne, dopředné lomítko nemá žádný speciální význam. Týká se to jen jediného znaku: zpětného lomítka.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: