Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mod_rewrite - jak rozwiązać problem?
Forum PHP.pl > Forum > Serwery WWW > Apache
slawo
Witam,

Chcę zamienić linki do moich płyt tak aby były bardziej dostępne dla wyszukiwarek.

Chce zamienić dotychczasowe:

http://www.zpodziemia.pl/pokaz_album.php?id=301

na:

http://www.zpodziemia.pl/album/legal_WNB_D...nosci_2003.html

tylko nie wiem jak wygenerować z bazy WNB_Dowod_Odpowiedzialnosci tak aby zamienilo polskie znaki i dodalo - lub _

Myślałem, żeby w bazie danych gdzie są płyty zrobić pole np. url i do każdej płyty recznie wpisać np. to WNB_Dowod_Odpowiedzialnosci.

i potem byłoby:

http://www.zpodziemia.pl/plyta.php?url=WNB...powiedzialnosci a to juz bym wiedzial jak zamienic

Tylko czy jest sens do kazdej plyty wpisywac recznie takie cos? mamy ich ponad 400.

A do nowych plyt myslalem w formularzu dodac kod ktoryby automatycznie wpisywal do bazy nazwe grupy laczona z tytulem plyty (WNB_Dowod_Odpowiedzialnosci)

tak sie to rozwiazuje zeby uzyskac taki adres? czy calkiem inaczej. To jest moj pomysl ktory wymyslilem bo nie moge nigdzie znalezc jakiegos gotowego rozwiazania.
everth
Słowo klucz do poszukania - slugify. Możesz to wykonać po stronie PHPa, ja natknąłem się nawet na rozwiązanie w MySQLu wink.gif
slawo
  1. $tekst = 'sławek żźćęąźół lubi spać cześć SŁAŹ MI STĄD ZE StÓŁ';
  2.  
  3. $polskieznaki = strtr($tekst, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');
  4.  
  5. $dolna_pauza = str_replace(' ', '_', $polskieznaki);
  6.  
  7.  
  8. echo($dolna_pauza);


Narazie cos takiego napisalem. Czyli usuwa polskie znaki, wstawia zamienniki. i zamiast spacji daje _

Teraz chce zeby usuwalo wszystko oprocz liter i liczb czyli: !@#$%^&*(()-=+ i inne takie.

Da sie to napisac w jakimis przedziale? od czegos do czegos? bo chyba bez sensu jest wypisywanie wszystkiego?

ok niby mi sie udalo...



http://www.zpodziemia.pl/pokaz_album.php?id=".$pa['id']."&typ=".$pa['wydanie']."&rok=".$pa['rok']."&url=".$pa['url']."

http://www.zpodziemia.pl/pokaz_album.php?i...elka_Niewiadoma

http://www.zpodziemia.pl/album/JedenSiedem..._legal_409.html

RewriteEngine On
RewriteRule ^album/([^-]+)_([^-]+)_([^-]+)_([^-]+).html$ pokaz_album.php?id=$4&typ=$3&rok=$2&url=$1 [L]


czyli teraz na stronie bede musial zmienic linki?

teraz maja taka strukture:

pokaz_album.php?id=".$pa['id']."&typ=".$pa['wydanie']."&rok=".$pa['rok']."&url=".$pa['url']."

i musze zrobic taki link?

album/".$pa['url']."_".$pa['id']."_".$pa['rok']."_".$pa['wydanie'].".html ?

to nie powinno sie samo zmieniac?


Fifi209
Cytat(slawo @ 26.02.2011, 23:39:40 ) *
Teraz chce zeby usuwalo wszystko oprocz liter i liczb czyli: !@#$%^&*(()-=+ i inne takie.
Da sie to napisac w jakimis przedziale? od czegos do czegos? bo chyba bez sensu jest wypisywanie wszystkiego?


Najprościej:
  1.  
  2. // $string - jest to string obrobiony przez str_replace (polskie znaki i spacje)
  3. // Teraz robisz tak:
  4. $string = preg_replace('#[^a-z_]#i', '', $string); // Czyli zamień wszystko co nie jest w przedziale na "nic" ;p


Powinno śmigać.
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.