DUzun's Web
Programare, proiecte personale, divertisment

DUzun it's ME
 
  
News
strpos vs stripos - PHP
 

Funcţiile strpos şi stripos (PHP şi nu numai) sunt foarte utile pentru căutarea unui subşir de caractere într-un şir. Nu vreau sa descriu aici cum se folosesc, descrierea detaliată şi exemple puteţi găsi pe site-ul PHP.net. Însă aici vreau să fac o mică observaţie asupra felului cum funcţionează acestea două şi ce probleme pot apărea în special la utilizarea funcţiei stripos.

Funcţia strpos este foarte rapidă şi recomandată pentru căutarea unui subşir într-un şir.

Funcţia stripos este asemănătoare cu strpos, însă ignoră registrul literelor (majuscule/minuscule). Cât despre performanţă, nu e cea mai bună alegere... De ce?

Să vedem cum lucrează:

    $pos = stripos($str, $substr);

este echivalent cu:

    $str    = strtoupper($str);
    $substr = strtoupper($substr);
    $pos    = strpos($str, $substr);

Parcă nu se petrece nimic deosebit, însă în cazul când $str este destul de mare se pierde mult timp la convertirea în majuscule. Şi dacă stripos este apelată repetat pentru acelaşi şir $str, de fiecare dată se converteşte registrul şirului, deci se face acelaşi lucrul de mai multe ori şi în zadar.

De exemplu, să considerăm următorul cod:

<?php

    $t1 = microtime(1);
    $str = str_repeat('abcdefghijklmnopqrstuvwxyz', 1<<16); // se genereaza un şir de 1.7Mo
    echo strlen($str) . '<BR>';
    $sub = substr($str, rand(0, strlen($str)-10), 10); // un subşir aleator al str de lungimea 10
    for($i=0; $i<1000; $i++) stripos($str, $sub); // apoi sa incercati cu strpos
    echo $sub . '<BR>';
    $t2 = microtime(1);
    echo 'Executat in '. ($t2 - $t1) . ' sec.';

?>

Pe calculatorul meu personal acest cod s-a executat în aproximativ un minut. Însă cu strpos - 0.002 secunde, deosebire radicală!

  </> 28.01.2011

Aici acumulez programe şi algoritmi interesanti alcătuiţi de mine (cu mici excepţii) pe parcursul studierii unor limbaje de programare.

Cea mai mare parte din ele sunt realizate în Pascal. 

Nu am scopul creării unui curs specializat sau a descrierii detaliate a anumitor limbaje, ci doar prezint informaţii utile, plus ceva exemple interesante...

 

Răsfoitorul de fișiere (File Browser):

Codul sursă al programelor este organizat în mape şi fişiere.

Paginile care conțin cod sursă de programe de regulă au un răsfoitor de fișiere în partea stangă a paginii reprezentat de un bloc cu titlul „File Browser”.

Pentru a vizualiza un program sau conţinutul unei mape, faceţi click pe numele fişierului / mapei. Dacă fişierul nu este textual, el se va descărca automat, iar dacă este textual, conținutul lui se va afișa într-un bloc pe centrul paginii.

Pentru a descărca un fişier, faceţi click pe dimensiunea (size) lui.

arr_d Limba / Language


 


Flag Counter

arr_r Login