Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z edycją ciągu
lobopol
post 10.09.2010, 12:03:23
Post #1





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


  1. function slugify($text)
  2. {
  3. $text = preg_replace('~[^\\pL\d]+~u', '-', $text);
  4. $text = trim($text, '-');
  5. if (function_exists('iconv'))
  6. {
  7. $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
  8. }
  9. $text = strtolower($text);
  10. $text = preg_replace('~[^-\w]+~', '', $text);
  11.  
  12. if (empty($text))
  13. {
  14. return 'n-a';
  15. }
  16.  
  17. return $text;
  18. }
  19. $aaa = 'aąźćęłś ąśqwertyuioplkjhgfdsazxcvbnm A Ą B C Ć D E Ę F G H I J K L Ł M N Ń O Ó P R S Ś T U W Y Z Ź Ż .jpg ';
  20. echo slugify($aaa);


Mam taką funkcje w teorii powinna zmniejszyć wszystkie litery, pozbyć się spacji i zamienić wszystkie znaki z akcentem na ich odpowiednik bez akcentu, niestety zamiast zwrócić poprawny ciąg zwraca mi n-a


--------------------
Go to the top of the page
+Quote Post
masiakla
post 10.09.2010, 12:12:29
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 17
Dołączył: 4.09.2010
Skąd: far far away

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


A po co trudzić się tutaj regexpem ? Ni ełatwiej strtolower i str_replace użyć ? Str replace jako argumenty zamiast stringów do zamiany może przyjąć dwa array'e z parami co zamieniasz na co.

  1. function sliugify($text){
  2. $co = array(' ','ś','ć'....);
  3. $na_co = array('_', 's', 'c' ....);
  4. return str_replace($co, $na_co, strtolower($text));
  5. }


Ten post edytował masiakla 10.09.2010, 12:14:56
Go to the top of the page
+Quote Post
lobopol
post 10.09.2010, 12:23:02
Post #3





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Tylko wypisać wszystkie możliwe akcenty to już problem.


--------------------
Go to the top of the page
+Quote Post
Noidea
post 10.09.2010, 12:31:40
Post #4





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


U mnie jeśli preg_replace ma modyfikator u, a przesyłasz mu dane niezakodowane w UTF-8, to zawsze zwraca pusty string (bez błędu, notice'a, ani niczego). PHP 5.3.3

Sprawdź ten trop u siebie

Ten post edytował Noidea 10.09.2010, 12:32:06


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:30