Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak stworzyc funkcję przerabiaj±cć nazwę artykułu tak, aby mozliwe było stworzenie pliku o takiej nazwie.
Forum PHP.pl > Forum > PHP
kukix
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 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.
extreme-dh
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 );
}
kukix
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");
SirZooro
Ja używam czego¶ takiego. Jak to działa i dlaczego to zastanówcie się już sami 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. ?>
extreme-dh
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.
barthpl
i jeszcze jedno, podobne rozwiązanie 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.
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.