Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: liczba spacji
Forum PHP.pl > Forum > PHP
DeyV
Już dawno nic nie pisałem tongue.gif więc pasowałoby to zmienić. laugh.gif
Potrzbna mi funkcja, która w maxymalnie wydajny sposób będzie potrafiła policzyć ilość spacji (zarówno ' ' jak i ' ') zaczynających określony string.
Nie chodzi oczywiście o metodę, jak to zrobić, a o to, jak zrobić to BARDZO szybko, ponieważ funkcja ta ma sie wykonywać setki razy...
kwiateek
Cytat
potrafiła policzyć ilość spacji (zarówno ' ' jak i ' ') zaczynających określony string.

zaczynajacych tzn. ? jesli string rozpoczycna sie od spacji czy wszystkie spacje w danym stringu?
DeyV
[php:1:c766b05e46]<?php
$text =' text'; // <<ten text ma 7 spacji
$text2 = 'text text ';// << spacje w tym textcie nas nie interesują
?>[/php:1:c766b05e46]

Oczywiście, żeby bylo ciekawiej winksmiley.jpg, spacje mają postać
[php:1:c766b05e46]<?php
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
?>[/php:1:c766b05e46]
uboottd
Jesli to jest az tak krytyczne to moze zainteresowac sie napisaniem modulu do phpa z taka funkcja ?
W C to na pewno bedzie o wiele szybsze i mozna tam pare czarow zastosowac.
DeyV
Można by i tak, wołabym jednak tego uniknąć.
Jak się nie da (będzie bardzo źle) to bedę nad tym myślał, a narazie podsuncie pomysł, jak otymalnie zrobić to w php.
kwiateek
Prosto, a czy to optymalne rozwiazanie to nie mam pojecia biggrin.gif
[php:1:2f3785b2f1]<?php
function CountSpacesInString($string)
{
preg_match ("/^[ ]*/i", $string, $string);

return strlen($string[0]);
}
?>[/php:1:2f3785b2f1]
DeyV
niestety, w ten sposób nie zliczamy & nbsp; a ja nie mogę pozwolić sobie na przetworzenie tego stringa.
kurtz
hmm 2 pomysly
1) preg_match_all i obrabianie wynikow
2) preg_replace z /e zwiekszjacym liczbik spacji - np $i++


pozdrawiam
mazy
mam taki głupi pomysł :

zeby tak zastosować explode() i zliczyć tablicę. ( plus sprawdzanie czy kolejne pozycje tablicy są puste lub są spacjami )

nie konicznie jest to dobre rozwiązanie ale to pierwsze które mi przyszło na myśł smile.gif
dragossani
[php:1:e8212e3f63]<?php
$ile_spacji = count( preg_split( '/( |&nbsp;)/', $string, -1) ) - 1;
?>[/php:1:e8212e3f63]
Zlicza wszystkie wystąpienia spacji i nbsp; w zawartości $string. Zastanawiam się właśnie jak ograniczyć przeszukiwanie wyłącznie do spacji wiodących.
maggot
ja wykombinowalem cos takiego
[php:1:c28af02791]<?php
function count_spaces($tekst)
{
$tekst = str_replace('&nbsp;',' ', $tekst);
return ( strlen($tekst) - strlen(ltrim($tekst)) );
}
?>[/php:1:c28af02791]

ale to chyba zbyt banalne, zeby bylo wydajne (str_replace) winksmiley.jpg
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.