Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ModRewrite - generowanie linkow
Forum PHP.pl > Forum > PHP
deniol13
Witam, chcę dodać przyjazne linki do mojej aplikacji, z htaccess nie mam problemu, problem polega na samym linku, tzn. za pomoc± php chcę 'wyczy¶cić' tekst z spacji, podłóg tj '_' i innych pierdół, aby były same znaki a-z i 0-9, bez polskich znaków i innych np chińskich biggrin.gif i czy muszę mieć tablicę z tymi znakami czy jest może jaka¶ funkcja która to sama zrobi ?
djgarsi
Np tak:
Kod
RewriteRule ^news/([0-9]*)/(.*).html$ news.php?id=$1 [L,NC]


O to chodzi??
deniol13
Nie, mam np w zmiennej $title tytul newsa i on moze wygladac tak: New¶i±¶¶cĽć±¶±sd i chce to 'przekonwertowac' na newsiassczcasasd (bez polskich znakow i innych pierdol) abym potem mogl to wstawic 'dynamiczne' do *templaty jako odnosnik (<a href="news/newsiassczc"></a>)
djgarsi
  1. function namen($namen) {
  2.  
  3. $namen = str_replace( "±", "a", $namen);
  4. $namen = str_replace( "±", "a", $namen);
  5. $namen = str_replace( "±", "a", $namen);
  6. $namen = str_replace( "ˇ", "A", $namen);
  7. $namen = str_replace( "ˇ", "A", $namen);
  8. $namen = str_replace( "·", "A", $namen);
  9. $namen = str_replace( "ł", "l", $namen);
  10. $namen = str_replace( "ł", "l", $namen);
  11. $namen = str_replace( "Ł", "L", $namen);
  12. $namen = str_replace( "Ł", "L", $namen);
  13. $namen = str_replace( "ó", "o", $namen);
  14. $namen = str_replace( "ó", "o", $namen);
  15. $namen = str_replace( "Ó", "O", $namen);
  16. $namen = str_replace( "Ó", "O", $namen);
  17. $namen = str_replace( "ń", "n", $namen);
  18. $namen = str_replace( "ń", "n", $namen);
  19. $namen = str_replace( "Ń", "N", $namen);
  20. $namen = str_replace( "Ń", "N", $namen);
  21. $namen = str_replace( "ć", "c", $namen);
  22. $namen = str_replace( "ć", "c", $namen);
  23. $namen = str_replace( "Ć", "C", $namen);
  24. $namen = str_replace( "Ć", "C", $namen);
  25. $namen = str_replace( "Ą", "z", $namen);
  26. $namen = str_replace( "ˇ", "z", $namen);
  27. $namen = str_replace( "ˇ", "z", $namen);
  28. $namen = str_replace( "¬", "Z", $namen);
  29. $namen = str_replace( "¬", "Z", $namen);
  30. $namen = str_replace( "¬", "Z", $namen);
  31. $namen = str_replace( "ż", "z", $namen);
  32. $namen = str_replace( "ż", "z", $namen);
  33. $namen = str_replace( "Ż", "Z", $namen);
  34. $namen = str_replace( "Ż", "Z", $namen);
  35. $namen = str_replace( "¶", "s", $namen);
  36. $namen = str_replace( "¶", "s", $namen);
  37. $namen = str_replace( "¶", "S", $namen);
  38. $namen = str_replace( "¶", "S", $namen);
  39. $namen = str_replace( "ę", "e", $namen);
  40. $namen = str_replace( "ę", "e", $namen);
  41. $namen = str_replace( "Ę", "E", $namen);
  42. $namen = str_replace( "Ę", "E", $namen);
  43. $namen = str_replace( "s64;", "EUR", $namen);
  44. $namen = str_replace( "s64;", "EUR", $namen);
  45. $namen = str_replace('=',' ',$namen);
  46. $namen = str_replace('/',' ',$namen);
  47. $namen = str_replace('\\',' ',$namen);
  48. $namen = str_replace('@',' ',$namen);
  49. $namen = str_replace('~',' ',$namen);
  50. $namen = str_replace('!',' ',$namen);
  51. $namen = str_replace('L','l',$namen);
  52. $namen = str_replace('$',' ',$namen);
  53. $namen = str_replace('%',' ',$namen);
  54. $namen = str_replace('^',' ',$namen);
  55. $namen = str_replace('*',' ',$namen);
  56. $namen = str_replace('_',' ',$namen);
  57. $namen = str_replace('{',' ',$namen);
  58. $namen = str_replace('}',' ',$namen);
  59. $namen = str_replace('[',' ',$namen);
  60. $namen = str_replace('?','',$namen);
  61. $namen = str_replace(']',' ',$namen);
  62. $namen = str_replace('-',' ',$namen);
  63. $namen = str_replace('–',' ',$namen);
  64. $namen = str_replace('&',' ',$namen);
  65. $namen = str_replace('"',' ',$namen);
  66. $namen = str_replace('.',' ',$namen);
  67. $namen = str_replace('\'',' ',$namen);
  68. $namen = str_replace(',',' ',$namen);
  69. $namen = str_replace(' ','_',$namen);
  70. $namen = str_replace(' ','_',$namen);
  71. $namen = str_replace(' ','_',$namen);
  72. $namen = str_replace(':','',$namen);
  73. $namen = str_replace('#','',$namen);
  74. $namen = str_replace('(','',$namen);
  75. $namen = str_replace(')','',$namen);
  76. $namen = str_replace('---','-',$namen);
  77. $namen = str_replace('--','-',$namen);
  78. $namen = str_replace('____','_',$namen);
  79. $namen = str_replace('__','_',$namen);
  80. $namen = str_replace('___','_',$namen);
  81. $namen = str_replace('8211;','',$namen);
  82. $namen = str_replace('8217;','_',$namen);
  83. $namen = strtolower($namen);
  84. return $namen;
  85.  
  86. }


ja osobi¶cie używam takiej funkcji do konwersji stringów do czystego tekstu.
<a href="news/'.namen($title).'"></a> i mniej wiecej tak wywołujesz to póĽniej.
Fifi209
OdpowiedĽ znajdziesz tu.

@up
A sprawdziłe¶ jakie argumenty może przyj±ć str_replace?
drPayton
  1. function prepareName($sString)
  2. {
  3. $sString = trim($sString);
  4.  
  5. $sString = iconv('UTF-8', 'UTF-8//IGNORE', $sString);
  6. $sString = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $sString);
  7. $sString = str_replace(' ', '-', trim(preg_replace('/([^a-zA-Z0-9_-\s])/s', '', $sString)));
  8.  
  9. return strtolower($sString);
  10. }


Wyj±tkowo dałem gotowca :S

To transliteruje polskie znaki. Na znaki inne mam (np rosyjski:)

  1. $aTranslitArray = array(
  2. 'A' => 'A', 'а' => 'a',
  3. 'Б' => 'B', 'б' => 'b',
  4. 'В' => 'V', 'в' => 'v',
  5. 'Г' => 'G', 'г' => 'g',
  6. 'Д' => 'D', 'д' => 'd',
  7. 'Е' => 'E', 'е' => 'e',
  8. 'Ё' => 'Yo', 'ё' => 'yo',
  9. 'Ж' => 'Zh', 'ж' => 'zh',
  10. 'З' => 'Z', 'з' => 'z',
  11. 'И' => 'I', 'и' => 'i',
  12. 'Й' => 'J', 'й' => 'j',
  13. 'К' => 'K', 'к' => 'k',
  14. 'Л' => 'L', 'л' => 'l',
  15. 'М' => 'M', 'м' => 'm',
  16. 'Н' => 'N', 'н' => 'n',
  17. 'О' => 'O', 'о' => 'o',
  18. 'П' => 'P', 'п' => 'p',
  19. 'Р' => 'R', 'р' => 'r',
  20. 'С' => 'S', 'с' => 's',
  21. 'Т' => 'T', 'т' => 't',
  22. 'У' => 'U', 'у' => 'u',
  23. 'Ф' => 'F', 'ф' => 'f',
  24. 'Х' => 'H', 'х' => 'h',
  25. 'Ц' => 'Ts', 'ц' => 'ts',
  26. 'Ч' => 'Ch', 'ч' => 'ch',
  27. 'Ш' => 'Sh', 'ш' => 'sh',
  28. 'Щ' => 'Shch', 'щ' => 'shch',
  29. 'Ъ' => '', 'ъ' => '',
  30. 'Ы' => 'Y', 'ы' => 'y',
  31. 'Ь' => '', 'ь' => '',
  32. 'Э' => 'E', 'э' => 'e',
  33. 'Ю' => 'Yu', 'ю' => 'yu',
  34. 'Я' => 'Ya', 'я' => 'ya'
  35. );


to doł±czone w powyższej funkcji przed iconv:
  1. $sString = strtr($sString, $aTranslitArray);

Analogicznie dodać można inne alfabety.
Fifi209
Dałem linka, w którym znalazłby praktycznie identyczn± funkcję. Wystarczyło ruszyć cztery litery.
drPayton
Link który dałe¶ wcze¶niej kierował na stronę główn±, a nie konkretnego artykułu (dlatego zreszt± go poprawiłe¶ wink.gif


@down: a to zwracam honor, zobaczyłem tylko listę wpisów i nie sprawdziłem nawet, czy jest tam poruszany temat wink.gif

Mam usun±ć swojego gotowca, w ramach nauki dla kolegi? biggrin.gif
Fifi209
Cytat(drPayton @ 15.06.2011, 21:22:54 ) *
Link który dałe¶ wcze¶niej kierował na stronę główn±, a nie konkretnego artykułu (dlatego zreszt± go poprawiłe¶ wink.gif

Owszem poprawiłem, kierował na główn± ale już z wyszukan± fraz±, uznałem że zjechać 1/4 strony to nic trudnego. ;]
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.