Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z edycj± ci±gu
Forum PHP.pl > Forum > Przedszkole
lobopol
  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
masiakla
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. }
lobopol
Tylko wypisać wszystkie możliwe akcenty to już problem.
Noidea
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
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.