Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne
Forum PHP.pl > Forum > Przedszkole
majestiq
Przykładowy (tekst w nawiasie).

  1. <?php
  2. function words ($w) {
  3. $tekst = ucwords($w);            
  4. $tekst = ucwords(strtolower($tekst));
  5. return $tekst;
  6. ?>


Funkcja ta ma za zadanie zamienić 'przykładowy tekst' tak, aby wszystkie wyrazy rozpoczynały się z wielkiej litery.
Niestety nie mogę jej dopracować.

Wynik tej funkcji dla tego tekstu to:

"Przykładowy (tekst W Nawiasie)."

Jak zrobić, aby litera poprzedzona "(" zamieniła się na Wielką ?

No i ostatnia rzecz, wyrazy jednoliterowe takie jak np: w, i, a powinny być zawsze napisane mała literą.

Proszę o pomoc.
drPayton
  1. <?php
  2. mb_convert_case($string, MB_CASE_TITLE, "UTF-8")
  3. ?>

Rozwiąże pierwszy problem (ucwords - dla tej funkcji, jak stoi w manualu "słowo" oznacza fragment tekstu następujący zaraz po 'białym znaku' [spacji, nowej lini etc])

Drugi problem jest już poważniejszy, i zdaje się że bez ambitniejszych ciosów się nie obejdzie...

added: No i po "ciosowaniu":

  1. <?php
  2. function _ucfirst($string) {
  3.    $_string_to_array = explode(' ', strtolower($string));
  4.    foreach($_string_to_array AS $_string_part) {
  5.        $tmp[] = (strlen($_string_part) > 1) ? mb_convert_case($_string_part, MB_CASE_TITLE, "UTF-8") : $_string_part;
  6.    }
  7.    return implode(" ", $tmp);
  8. }
  9.  
  10. $txt = 'przYKLAdowy (tekst w nawiasie).';
  11.  
  12. echo '<br />Before: ' . $txt;
  13.  
  14.  
  15. echo '<br />After: ' .  _ucfirst($txt);
  16. ?>


smile.gif

PS. Swoją drogą, to po lekkich ulepszeniach taka funkcja może się przydać w zbiorze narzędzi...
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.