Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Jak na preg_match?

Zdravim,
chtěl bych se Vás zeptat, potřeboval bych po odeslání formuláře ověřit zda obsahuje povolené znaky a-z 0-9

Mám na to funkci

 function checkpreg(){
  global $filename;
  $lowfilename = strtolower($filename);
  if (preg_match('', $lowfilename)) return true;
  return false;
 }

No problém spočívá v tom, že s funkcí preg_match dělám poprvé a nevím co do ní zapsat. Zkoušel jsem to napsat pomocí této stránky http://www.regularnivyrazy.info/regularni-vyrazy-z aklady.html kde jsou jakž takž vysvětleny reg.výrazy ale nepochodil sem.

Nemohl byste někdo, kdo to umí doplnit chybějící část?

Potřebuji aby se return true; vyhodil pouze v případě, že dané slovo z formuláře obsahuje pouze a-z (bez diakritiky) nebo 0-9 nebo oboje a-z0-9 s tím, že nesmí obsahovat ani mezery..
př. projde rok2012 ale neprojde rok 2012 ...

Moc byste mi pomohli, děkuji.
PS: kdybyste někdo měl nějakou pěkně přehlednou stránku, kde by se dalo naučit pracovat jednodušeji s preg_match, abych pochopil jak to skládat, budu vděčný.

Předmět Autor Datum
Jestli jde o php, nezapomínal bych na http://cz.php.net/manual/en/function.ctype-alnum.p hp nový
Titulkář 27.04.2012 16:19
Titulkář
Abych to upřesnil.. Mám tento script. <?php if (checkpreg()){ $filename = strtolower($_POST['ident… nový
Eessencia 27.04.2012 16:35
Eessencia
Aha tak se omlouvám, až když jsem to sem zkopíroval jsem si toho všiml. Proměnnou $filename; jsem uk… poslední
Eessencia 27.04.2012 16:40
Eessencia

Abych to upřesnil..

Mám tento script.

<?php
   if (checkpreg()){
    $filename   = strtolower($_POST['identifikace']);
    $randident1 = rand(1, 9);
    $randident2 = rand(10, 99);
    $randident3 = rand(10, 99);
    $randident  = $randident1.$randident2.$randident3;
    $open = fopen('./include/'.$filename.'-'.$randident.$format.'', 'w');
    chmod('./include/'.$filename.'-'.$randident.$format.'', 0777);
    sleep(1);
    $status = '<span class="green textshadow"># Soubor :: '.$filename.'-'.$randident.$format.' byl vytvořen.</span>';
   } else {
    sleep(1);
    $status = '<span class="red bold textshadow"># Název souboru neobsahuje povolené znaky [a-z] [0-9].</span>';
   }
?>

K čemuž patří tedy tato funkce

 function checkpreg(){
  global $filename;
  $lowfilename = strtolower($filename);
  if (!ctype_alnum($lowfilename)) return false;
  if (!preg_match("/\S/m", $lowfilename)) return false;
  return true;
 }

Našel jsem tento novější dotaz http://diskuse.jakpsatweb.cz/?action=vthread&forum =9&topic=135247
Kde chce přesně to, co chci já. Vyzkoušel jsem všechny postupy, které mu navrhují.
Ale pokaždý když odešlu formulář
s např. názvem souboru karel12 (což má být povoleno) obsahuje jen písmena, čísla, je bez mezer, atd... Tak i přesto mě funkce vyhodí false a dostanu echo, že název souboru obsahuje nepovolené znaky.

:( Já si s těma regulárníma výrazam nedokážu poradit :-/

Aha tak se omlouvám, až když jsem to sem zkopíroval jsem si toho všiml.
Proměnnou $filename; jsem ukládal až po ověření funkce, což je blbost.
včetně toho 2x strtolower ;)

Už to funguje jak má.. můžete smazat, zavřít...

Zpět do poradny Odpovědět na původní otázku Nahoru