Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]wyrazy z dużej litery
shreker
post
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
ghost1511
post
Post #2





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

Ostrzeżenie: (0%)
-----


Polskie litery:
function.mb-convert-case

Natomiast z tymi wielkimi literami to może jakieś wyrażenie regularne? Ale to jakiegoś ninja magika potrzebujesz (IMG:style_emoticons/default/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.

Ten post edytował ghost1511 12.03.2014, 07:48:21
Go to the top of the page
+Quote Post
kreatiff
post
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


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. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ghost1511
post
Post #4





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

Ostrzeżenie: (0%)
-----


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. (IMG:style_emoticons/default/smile.gif)

Google nic nie podpowiada. Dasz jakiś link?
Go to the top of the page
+Quote Post
markuz
post
Post #5





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował markuz 12.03.2014, 14:05:07
Go to the top of the page
+Quote Post
timon27
post
Post #6





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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)

Ten post edytował timon27 13.03.2014, 16:16:40
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 16:08