Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Jak stworzyc funkcję przerabiającć nazwę artykułu tak, aby mozliwe było stworzenie pliku o takiej nazwie., chodzi o usunięcie spacji i wszystkich niedozwolonych znaczków z nazwy
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.

Zastanawiam się nad tym, jak stworzyć funkcję, która tak fomratowala by nazwę artykulu, żeby mozna bylo stworzyć plik o takiej nazwie.

dla przykładu podam link z allegro.
Prosze zwrócić uwage, jak nazwa produktu została zmodyfikowana.

Cytat
czytnik kart = Fotobank = z LCD (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) FV+GW wroclaw


Cytat



Jak zabezpieczyć się przed znakami, ktorych w tym momencie nie byłbym w stanie przewidziec?

Prosze o podpowiedź jak stworzyć taką funkcję.
Bede bardzo wdzięczny za wszelkie wypowiedzi.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
extreme-dh
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 3
Dołączył: 25.05.2008

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


Ja używam czegoś takiego:

Kod
function URLize( $string ){
    $r = '';
    $s1 = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
    for ($i = 0, $sLen=strlen($s1); $i < $sLen; $i++){
        $ch1 = $s1[$i];
        $ch2 = mb_substr($string, $i, 1);
        $r .= $ch1=='?'?$ch2:$ch1;
    }
    
    $r = trim( preg_replace( '/[\W_]+/', '_', $r ), '_' );
    return strtolower( $r );
}
Go to the top of the page
+Quote Post
kukix
post
Post #3





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


dzięki za podpowiedź.

Kod jest ok, tylko, że nie zamienia polskich literek np ą na a itd..

zmieniłem 3 linijke na:

Kod
$s1 = iconv('ISO-8859-2', 'ASCII//TRANSLIT', $tekst);


ale nie pomaga..

---------------------------------- EDIT ----------------------------
Dodalem jeszcze jedną linijke na poczatku funkcji:

Kod
$tekst = strtr($tekst,"ąśźćęń󳥌ŹĆĘŃÓŁąśĽˇŚŹ","aszcenolASZCENOLaszASZ");


Ten post edytował kukix 17.08.2008, 12:00:20
Go to the top of the page
+Quote Post
SirZooro
post
Post #4





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

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


Ja używam czegoś takiego. Jak to działa i dlaczego to zastanówcie się już sami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. <?php
  2. function urlize($str)
  3. {
  4. $from = array('ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż');
  5. $to  = array('a','c','e','l','n','o','s','z','z','A','C','E','L','N','O','S','Z','Z');
  6. $str = str_replace($from, $to, $str);
  7. $str = preg_replace('/[^a-zA-Z0-9-_]/', ' ', $str);
  8. $str = trim($str);
  9. $str = preg_replace('/s+/', '-', $str);
  10. return $str;
  11. }
  12. ?>
Go to the top of the page
+Quote Post
extreme-dh
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 3
Dołączył: 25.05.2008

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


Cytat(kukix @ 17.08.2008, 11:30:10 ) *
Kod jest ok, tylko, że nie zamienia polskich literek np ą na a itd..


Wszystko działa jak należy, zapomniałem tylko o jednej rzeczy. trzeba ustawić wcześniej setLocale na jakiś UTF, np polski
Kod
setlocale(LC_ALL, 'pl_PL.UTF8');


Wtedy wszystko będzie ładnie działało.

SirZooro: Twoja funkcja jest może OK, ale zadziała jedynie dla polskiego alfabetu.

Ten post edytował extreme-dh 17.08.2008, 22:53:42
Go to the top of the page
+Quote Post
barthpl
post
Post #6





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


i jeszcze jedno, podobne rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. function makeUrl( $nazwa ) {
  3. // tutaj do zestawu warti dodać jeszcze inne popularne litery z języka francuskiego i niemieckiego;
  4. $nazwa = strtr( $nazwa,'ąćęłńóśźżĄĆĘŁŃÓŚŹŻ', 'acelnoszzACELNOSZZ' );
  5. $nazwa = preg_replace( "/[^a-z0-1]{1}/i", '_', $nazwa );
  6. while( strcmp($nazwa, $nazwa = str_replace( '__', '_', $nazwa)) != 0 );
  7. return $nazwa;
  8. }
  9.  
  10. $nazwa = "czytnik kart = Fotobank = z LCD !! FV+GW wroclaw";
  11.  
  12. echo makeUrl( $nazwa );
  13. ?>


wynik jest taki: czytnik_kart_Fotobank_z_LCD_FV_GW_wroclaw

edit-->
rozwiązanie łączące pomysły powyżej umieściłem w wątku: http://forum.php.pl/index.php?showtopic=98...mp;#entry497149.

Ten post edytował barthpl 19.08.2008, 15:36:19
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: 24.08.2025 - 08:34