Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] minimalna długość wyrażenia
Forum PHP.pl > Forum > Przedszkole
archie
chodzi o to żeby tekst wpisany do okienka formularza był dłuższy niż (np.) 4 znaki.
archie
zapomnialem dopisac sadsmiley02.gif, że chodzi oczywiscie o php
NuLL
  1. <?php
  2.  
  3. if(strlen($wyrazenie)<4)
  4. {
  5. die("twoje wyrazenie jest za krotkie");
  6. }
  7.  
  8. ?>

strlen" title="Zobacz w manualu php" target="_manual
archie
dzieki smile.gif
mike
Można też inaczej.
  1. <?php
  2.  
  3. $strString = 'test';
  4.  
  5. if( ! isset( $strString{4} ) )
  6. {
  7. echo 'Ciąg za krótki. Powinien byc dłuższy niż 4 znaki';
  8. }
  9.  
  10. ?>


Przeczytalem ostatnio w książce "Guide to php Security" autorstwa Ilii Alshanetsky, że srelen() to jedna z wolniejszych funkcji i dużo lepiej zastosować podany wyżej kod.
em1X
OT: ciekawi mnie czemu miala by byc wolniejsza skoro, jak pamietam z c++, to zwykla petla szukajaca chyba $ na koncu? smile.gif
UDAT
Cytat(em1X @ 2006-05-16 05:36:47)
OT: ciekawi mnie czemu miala by byc wolniejsza skoro, jak pamietam z c++, to zwykla petla szukajaca chyba $ na koncu? smile.gif

Teoretycznie taka pętla ma złożność O(n), a sprawdzenie O(1), jednakże chyba przy 4 znakach nie powinno być z tym problemu.
Guest
OT: A fakt $zmienna{X} bedzie jednak szybsza od strlen() - logiczne tongue.gif zwracam honor
mike
Tu jest jeszcze jedna kwestia, poza sprawdzaniem zamiast szukania.
isset() jest konstrukcją języka i jest wykonywana szybciej niz dowolna funkcja nie będąca konstrukcją języka.

Załóżmy jednak, że w aplikacji wywołujemy klika razy strlen(), zawsze przy walidacji.
Różnica jednak będzie.

Co nie zmienia faktu że poruszamy się w bardzo małych różnicach czasu, ale ... ziarnko do ziarnka.
dr_bonzo
Maly przykladzik:
  1. <?php
  2. $str = 'ab';
  3. $str{7} = 'h';
  4. var_dump( $str );
  5.  
  6. function print_char( $char )
  7. {
  8. print( $char . '::' . ord( $char ) . '<br />' );
  9. }
  10. array_map( 'print_char', str_split( $str ) );
  11. ?>

Wynik:
Kod
string(8) "ab h" a::97
b::98
::32
::32
::32
::32
::32
h::104


Ja tam sie \0 spodziewalem a nie spacji smile.gif
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.