Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem (chyba) z regexpami (znowu)
Forum PHP.pl > Forum > PHP
Yacho
a wiec mam kod :

[php:1:3fa98d85fc]<?php
if(preg_match('/^([a-z0-9_]{3,8}+)$/i',$_POST['login'])) //sprawdzamy login //
{
$s=count($poprawne);
$poprawne[$s]='Login';
}
else
{
$s=count($bledne);
$bledne[$s]='Login';
}
if(preg_match('/^([a-z0-9_]{3,8}+)$/i',$_POST['haslo'])) //sprawdzamy haslo //
{
$s=count($poprawne);
$poprawne[$s]='Hasło';
}
else
{
$s=count($bledne);
$bledne[$s]='Hasło';
}
if($_POST['haslo']!=$_POST['haslo2']) //sprawdzamy powtorzone haslo //
{
$s=count($poprawne);
$poprawne[$s]='powtórzone hasło';
}
else
{
$s=count($bledne);
$bledne[$s]='Źle powtórzone hasło';
}
if(preg_match('/^([@a-z0-9_.]+)$/i',$_POST['email']))
{
$s=count($poprawne);
$poprawne[$s]='Adres e-mail';
}
else
{
$s=count($bledne);
$bledne[$s]='Adres e-mail';
}



// Wyswietlanie danych o blednych i wypelnionych polach //
echo'Poprawne dane:<br/>';
foreach($poprawne as $key => $val)
{
echo"$val<br/>";
}

echo'bledne dane:<br/>';
foreach($bledne as $key => $val)
{
echo"$val<br/>";
}

?>[/php:1:3fa98d85fc]

niby wszystko jest ok natomiast przy testowaniu wywala mi :
[quote]Warning: Compilation failed: internal error: code overflow at offset 19 in /home/yacho/public_html/form.php on line 2
Warning: Compilation failed: internal error: code overflow at offset 19 in /home/yacho/public_html/form.php on line 12[/quote]

Pytanie :

Co to za blad i jak sie go pozbyc ? ;][/quote]
bamboos
Witam!!
1. Pousuwaj w regexpach te + smile.gif
2. Jak masz porównanie haseł... to wychodzi, że jak są różne to ma być dobrze. Zamień ,,!='' na ,,==''
To już sprawi, że będzie działąć (chyba) smile.gif
Pozatym:
[php:1:b227a19076]<?php
$tab = array('a', 'b', 'c');
$tab[] = 'd';
print_r($tab);
?>[/php:1:b227a19076]
Jak widzisz, jeśli nie ma indexu to przypisuje wartość pierwszemu wolnemu indexowi. Więc te wszystkie count() są niepotrzebne, a tylko obciążają skrypt!
adwol
Zamień:
Kod
/^([a-z0-9_]{3,8}+)$/i

na:
Kod
/^[A-Za-z0-9_]{3,8}$/

Uwagi:
:arrow: będzie szybciej działało wyrażenie z wymienionymi dużymi literami w klasie niż dodawanie modyfikatora /i
:arrow: nie mieszaj kwantyfikatorów zakresu ({} i + albo *), to Ci spowodowało błąd
:arrow: nie musisz eskejpować kropki w klasie znaków (wewnątrz [ ])
:arrow: nie obkładaj nawiasami całego wyrażenia jeśli interesuje Cię tylko wynik logiczny wyrażenia czy się dopasowało czy nie; to spowalnia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.