Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [STRING] Sprawdzanie czy string jest pisany wielkimi literami
Forum PHP.pl > Forum > PHP
kiler129
Witajcie!
Kolejne 400 linijek tego wieczoru już za mną gdy natknąłem się na pewien kłopot. Mam ~200MB plik tekstowy z różnymi danymi, muszę wypisać z niego tylko 2 typy danych. Jednym z nich są wszystkie 20 lub 21 znakowe ciągi pisane wielkimi literami (tzw. supercased).
Mogę to załatwić regexem albo na piechotę za pomocą for`a jednakże wydajność będzie koszmarna. O ile doszukałem się w manualu przeróżnych funkcji do konwersji tekstu na różne wielkości liter o tyle nie mogę znaleźć niczego co powiem mi czy tekst jest jak po wyjściu z strupper`a.

Z góry dzięki za pomoc.
erix
Jak masz krótki ciąg, to wystarczy:
  1. $data = ...;
  2.  
  3. if($data==strtoupper($data)){
  4. // WIELKIE!
  5. }


Ale to ma tę wadę, że zżera trochę pamięci.

Cytat
Mogę to załatwić regexem albo na piechotę za pomocą for`a jednakże wydajność będzie koszmarna.

Dlaczego? Przecież złożoność pamięciowa będzie minimalna (z tego powodu, że za jednym razem obrabiasz tylko jeden znak), a czasowa też będzie krótko:

  1. $data = fopen('asd', 'r');
  2. $wielkie = true;
  3.  
  4. while(!feof($file)){
  5. $b = fgetc($file);
  6. if($b!=strtoupper($b)){
  7. $wielkie = false;
  8. break;
  9. }
  10. }


sory za brak wcięć, ale nie chce mi się teraz odpalać notepada winksmiley.jpg)

Warunek sprawdzający cyfry sobie sam możesz zrobić. Podejrzewam, że kod byłby jeszcze szybszy, gdybyś zamiast strtoupper użył sprawdzania zakresu ASCII.
kiler129
To było banalne smile.gif
Faktycznie pierwsza sztuczka zdala egzamin bo linie są krótkie.
Dzięki za pomoc.
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.