Autor Zpráva
krteczek
Profil *
nefunguje mi funkce s regularnim vyrazem pls kde mám chybu?


function Jetelefon($tel)
{
return ereg("^(\+420)? ?\d{3} ?\d{3} ?\d{3}$",$tel);
}

if ($_POST["telefon-1"]!='')
{
if (!Jetelefon($_POST["telefon-1"]))
{
echo "Zadali jste první telefonní číslo ve špatném formátu.";
}
}

nevíte náhodou kde delám chcybu??? popripade bych jeste potreboval aby to bralo i jiná než česká tel čísla neco ve stylu

return ereg("^(\+)\d{3} ?\d{3} ?\d{3} ?\d{3}$",$tel);


což mi bohužel taky nefunguje:(
krteczek
krteczek
Profil *
a tu proměnnou $_POST["telefon-1"] určitě nemám prázdnouzadávám tam tel čísla v ruznych formátech a ani tuk
krteczek
Yuhů
Profil
co to znamená "nefunguje" v původním dotazu?

Co to dělá? Nějaká chyba nebo hláška?
krteczek
Profil *
stále mi to vypisuje tu moji chybovou hlášku co je v echo jakémkoliv tvaru tel. čísla
krteczek
Leo
Profil
Zacal bych tim, ze vymezim regularni vyraz, treba lomitky, jak byva zvykem, ted tam podle me mate retezec, ale je mozny ze na to jenom po ranu nevidim,
krteczek
Profil *
to Leo ted Tě vůbec nechápu :o( jak to myslíš s lomítky???
ja jsem z toho divny... jiná funkce mi funguje dobře napíšu tu obě...:


<?
function Jeemail($cislo)
//kontrola správnosti emailové adresy
{

return ereg("^.+@.+\..+$",$cislo);

}

function Jetelefon($tel) //kontrola správnosti telefonního čísla
{
return ereg("/^(\+420)? ?\d{3} ?\d{3} ?\d{3}$/",$tel);
}
$BudemeZobrazovat=true;
if (!empty($_POST)) // už se odeslalo
{
//a tady je kod ktery využívá Jeemail:
$_POST["email"]=stripslashes($_POST["email"]);
$_POST["email"]=strip_tags($_POST["email"]);
$_POST["email"]=trim($_POST["email"]);
$_POST["email"]=ucfirst($_POST["email"]);
$_POST["email"]=substr(($_POST["email"]),0,49);
if ($_POST["email"]!='')
{
if (!Jeemail($_POST["email"]))
{
echo "Zadali jste e-mail ve špatném formátu, prosím opravte to.";
}
}
//tady je kod ktery využívá Jetelefon
$_POST["telefon-1"]=stripslashes($_POST["telefon-1"]);
$_POST["telefon-1"]=strip_tags($_POST["telefon-1"]);
$_POST["telefon-1"]=trim($_POST["telefon-1"]);
if ($_POST["telefon-1"]!='')
{
if (!Jetelefon($_POST["telefon-1"]))
{
echo "Zadali jste první telefonní číslo ve špatném formátu. Povolený je pouze mezinárodní formát telefonního čísla začínající znaménkem +, například: +420 123 456 789 nebo +420123456789 .";
}
}
}
//zobrazení formuláře
if ($BudemeZobrazovat)
{
?>
<form method="post" action="index.php?clanek=zadavani-kontaktu">
<table>
<tr>
<td>Telefon 1 (20): </td><td><input name="telefon-1" value="<?echo $_POST["telefon-1"]?>"></td>
</tr>
<tr>
<td>E-mail (50): </td><td><input name="email" value="<?echo $_POST["email"]?>"></td>
</tr>
<tr>
<td colspan="2"><input type="Submit" name="odesli" value="Odeslat"></td>
</tr>
</table>
</form>
}
?>

email mi to kontroluje uspěšně a správně i bez těch lomítek, ale telefonní číslo mi stále vypisuje echo o špatném formátu tel čísla, ad tam lomítka použiji nebo ne... už fakt nevík co dělám špatně
tohle je zjednodušený výtah z toho formuláře(má asi 15 položek to zde vypisovat nemá cenu)
, a jeste tam není sekce která ten formulář odešle v případě že je všechno bez chyb, ale to až mi budou fachat kontroly
krteczek
krteczek
Profil *
tak už jsem to vyřešil, ale ne přes funkci . kod je následující (pro ty co by ho chtěli případně použít)
tenhle kod kontroluje jestli je telefonní číslo zadáno ve správném, mezinárodním formátu +123 456 789 123 s mezerami po třech číslech, nebo bez mezer v celku

if ($_POST["telefon-1"]!='')
{
if (!preg_match("/^(\+) ?\d{3} ?\d{3} ?\d{3} ?\d{3}$/",$_POST["telefon-1"]))
{
echo "Zadali jste první telefonní číslo ve špatném formátu. Povolený je pouze mezinárodní formát telefonního čísla začínající znaménkem +, například: +420 123 456 789 nebo +420123456789 .";
}

}



další kod kontroluje jestli je číslo v mezinárodním formátu s jakoukoliv mezinárodní předvolu, nebo bez ní , např: +123 123456789 a nebo 123456789 pro vnitrostátní tel číslo


if ($_POST["telefon-1"]!='')
{
if (!preg_match("/^(\+\d{3})? ?\d{3} ?\d{3} ?\d{3}$/",$_POST["telefon-1"]))
{
echo "Zadali jste první telefonní číslo ve špatném formátu. Povolený je bud mezinárodní formát telefonního čísla začínající znaménkem +, například: +420 123 456 789 nebo +001 123 456 789 , nebo vnitrostátní 9-ti místné telefonní číslo bez mezinárodní předvolby .";
}

}

pokud byste chtěli jen česká telefonní čísla v mezinárodním formátu, stačí upravit podmínku s regulárním výrazem do téhle podoby:

if (!preg_match("/^(\+420) ?\d{3} ?\d{3} ?\d{3}$/",$_POST["telefon-1"]))

snad to někomu pomůže...
ale mne by zajímalo jak by měla vypadat ta funkce, a kde sem udělal chybu
krteczek
Toto téma je uzamčeno. Odpověď nelze zaslat.