Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] zamiana tekstu pisanego na link
twardes
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2008

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


Witam

tym razem mam wątpliwości co do tworzenia linków ze stringów zawierających np polskie znaki bądź inne symbole nie mogące pojawić sie w linku.

czy jest jakaś funkcja albo już gotowy skrypt "robiący" coś takiego?

na przykład chcę zamienić tekst
Agencja Reklamowa - Łódź, Studio reklamy. Chcesz się dowiedzieć więcej?
na
agencja_reklamowa_lodz_studio_reklamy_chcesz_sie_dowiedziec_wiecej

napisałem już cześć skryptu, ale po pierwsze tu tylko usuwa "złe" znaki, a po drugie wymyślenie i dopisanie wszystkich możliwości wydaje się być bardzo czasochłonne.
Kod
   <?php
  
   echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">';
  
   $tekst_old = 'Agencja Reklamowa - Łódź, Studio reklamy. Chcesz się dowiedzieć więcej?';
  
   $bez = array("ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż", "-", ",");
  
   $tekst_new = str_replace(' ','_',$tekst_old);
   $tekst_new = str_replace($bez,'',$tekst_new);
  
   echo $tekst_old;
   echo "
   ";
   echo $tekst_new;
  
   ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
twardes
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 13.01.2008

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


dziękkuje uprzejmie zaispirowało mnie to to posukania dokłądniejszego w googlu już gotowych funkcji. Takową znalazłem i znmodyfikowałem na moje potrzeby

Kod
<?php

function przerobNalink($string) {
    
     $string = str_replace('Ľ','z',$string);
     $string = str_replace('¬','z',$string);
    
     $string = strtolower($string);
    
     $banned = array('www.','.pl','.com','.eu','.net','.org','http://');
     $altern = array('','','','','','','');
    
     $string = str_replace($banned, $altern, $string);
    
     $polskie = array(',', ' - ',' ','ę', 'Ę', 'ó', 'Ó', 'ˇ', '±', '¦', '¶', 'ł', 'Ł', 'ż', 'Ż', '¬', 'Ľ', 'ć', 'Ć', 'ń', 'Ń','-',"'","/","?", '"', ":", '!','.', '&', '&amp;', '#', ';', '[',']', '(', ')', '`', '%', '"', '"', '.');
     $miedzyn = array('_','_','_','e', 'e', 'o', 'o', 'a', 'a', 's', 's', 'l', 'l', 'z', 'z', 'z', 'z', 'c', 'c', 'n', 'n','_',"","","","","",'','_', '', '', '', '', '', '', '', '', '', '', '');
     $string = str_replace($polskie, $miedzyn, $string);
    
     // usuń wszytko co jest niedozwolonym znakiem
     $string = preg_replace('/[^0-9a-z\_]+/', '', $string);
    
     // zredukuj liczbę my¶lników do jednego obok siebie
     $string = preg_replace('/[\_]+/', '_', $string);
    
     // usuwamy możliwe my¶lniki na pocz±tku i końcu
     $string = trim($string, '_');
    
     $string = stripslashes($string);
    
     $koniec = strpos($string,_,40);
    
     if($koniec !== false)
     {
         $string = substr($string,0,$koniec);
     }
    
     // na wszelki wypadek
     $string = urlencode($string);
    
     return $string;
}

?>



co ciekawe nie działa zamiana liter ź na z i Ź na z w tablicy musialem zrobiś specjalnie 2 osobne wersy, taka oto ciekawostka.
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 18:34