Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyrazy z dużej litery
Forum PHP.pl > Forum > Przedszkole
shreker
witam potrzebuję przetworzyć string tak żeby wszystkie wyrazy zaczynały się od duzej litery, bazuję na standardowym:
  1. $string = ucwords(strtolower($string));

ale jak zrobić aby wyrazy typu np: cyfry rzymskie, nazwy własne, skróty, itp napisane duzymi literami nie były przetwarzane czyli np: WOŚP ma zostać jako WOŚP a nie Wośp,
oraz druga sprawa: wyrazy zaczynające sie od polskich znaków typu ŁÓŚĄĘĆ .... również były przetwarzane poprawnie, bo zastosowanie powyższego przykładu niestety nie działa.
ghost1511
Polskie litery:
function.mb-convert-case

Natomiast z tymi wielkimi literami to może jakieś wyrażenie regularne? Ale to jakiegoś ninja magika potrzebujesz wink.gif
Możesz też podzielić zdanie na tablicę i sprawdzać czy element tablicy jest równy
  1. tab[$i] == mb_convert_case($tab[i], MB_CASE_UPPER, "UTF-8");
jezeli tak to wtedy nie wykonywać ucfirst.
kreatiff
ghost1511 w linku, który podajrzesz w komentarzach są funkcje spełniające założenia z pierwszego postu w 100%. Np. mb_convert_case_utf8_variation. smile.gif
ghost1511
Cytat(kreatiff @ 12.03.2014, 12:53:53 ) *
ghost1511 w linku, który podajrzesz w komentarzach są funkcje spełniające założenia z pierwszego postu w 100%. Np. mb_convert_case_utf8_variation. smile.gif

Google nic nie podpowiada. Dasz jakiś link?
markuz
Jakieś słabe masz to Google.. Pierwszy wynik po wpisaniu mb_convert_case_utf8_variation
Gdyby jednak dla Ciebie Google nie było tak łaskawe:

  1. <?php
  2. function mb_convert_case_utf8_variation($s) {
  3. $arr = preg_split("//u", $s, -1, PREG_SPLIT_NO_EMPTY);
  4. $result = "";
  5. $mode = false;
  6. foreach ($arr as $char) {
  7. $res = preg_match(
  8. '/\\p{Mn}|\\p{Me}|\\p{Cf}|\\p{Lm}|\\p{Sk}|\\p{Lu}|\\p{Ll}|'.
  9. '\\p{Lt}|\\p{Sk}|\\p{Cs}/u', $char) == 1;
  10. if ($mode) {
  11. if (!$res)
  12. $mode = false;
  13. }
  14. elseif ($res) {
  15. $mode = true;
  16. $char = mb_convert_case($char, MB_CASE_TITLE, "UTF-8");
  17. }
  18. $result .= $char;
  19. }
  20.  
  21. return $result;
  22. }
  23. ?>


Źródło: http://www.php.net/manual/de/function.mb-c...-case.php#99081
timon27
A po co w ogóle tak kombinować?
CSS zamienia uwzględniając polskie znaki:

  1. <span style="text-transform: capitalize;">
  2. test: śniady, ósmy ćpun</span>



(sprawdzane na IE, Firefox, Opera)
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.