Re: Konstrukce v PHP

From: Paco (paco@seznam.cz)
Date: 18. 08. 2002, 12:39 CEST


>> while(strpos($text,'  ')) $text=str_replace('  ',' ',$text);
 
> take bych se regularnich vyrazu nebal, jen vyse uvedeny priklad je k
> nicemu - co kdyz bude vice mezer nez dve

Nemas pravdu...
Bude-li jich vice nez dve za sebou, vubec to nevadi - strpos()
vzdy najde prvni dve a cyklus tak postupne vsechny prebytecne
spaces spolyka. V tomhle jednoduchem provedeni to predpoklada,
ze nejsou prebytecne spaces na zacatku textu, coz lze snadno
osetrit.

> nicmene kdybych nemel pouzit regularni vyrazy, a bylo by mi jedno jak
> dlouho se to zpracovava - napr pred nacpanim do databaze tak bych
> treba pouzil toto:

> $pole1 = explode(" ", $text);
> for($i=0; $i < count($pole1); $i++):
>   if(trim($pole1[$i]) != "") $pole2[] = $pole1[$i];
> endfor;
> $text = implode($pole2, " ");

Trochu zbytecne rozvlekle. Explode() v tomto pripade na miste
prebytecnych spaces vyprodukuje prazdny string "", takze je
tam uplne zbytecny treba ten test s trimem. Ale cele to uplne
zbytecne vytvari dve pole a bude to o hodne pomalejsi nez ten
muj while(strpos()... A kdyz uz, pak tedy radeji takhle:

$pole1=explode(' ',$text);
for($i=0;$i<count($pole1);$i++) if($pole1[$i]) $pole2[]=$pole1[$i];
$text=join(' ',$pole2);

> nemusi to byt smyckou for a pod da se to resit nekolika zpusoby
> Jirka

Jiste. Vzdyt jsem psal, ze "...jde to udelat jeste spoustou
jinych konstrukci, ale pochybuji, ze by to bylo rychlejsi,
nez ten regex." ...

pako Paco. 


______________________________________________________________________
Reklama:
Kam do kina ci divadla? http://kultura.seznam.cz



This archive was generated by hypermail 2.1.2 : 18. 08. 2002, 12:39 CEST