Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zamiana tekstu pisanego na link
Forum PHP.pl > Forum > Przedszkole
twardes
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;
  
   ?>
gutek84
A gdybys tak stworzyl taką tablice dwuwymiarowa:
$bez =Array
(
[0] => Array
(
[0] => ń
[1] => n
)

[1] => Array
(
[0] => ą
[1] => a
)
itd..


)

i dalej


$tekst_new = str_replace(' ','_',$tekst_old);
for($i=0;$i<count($bez);$i++){
$tekst_new = str_replace($bez[i][0],$bez[i][1],$tekst_new);

}

wtedy kazdy nieprawidlowy znak zamienisz na prawidlowy!
Nie wiem czy zadziala ale warto sprobowac.
pozdr
nowotny
Cytat(gutek84 @ 2.02.2008, 16:53:07 ) *
A gdybys tak stworzyl taką tablice dwuwymiarowa:

Tak jest chyba prościej:
  1. <?php
  2. echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">';
  3.  
  4. $tekst_old = 'Agencja Reklamowa - Łódź, Studio reklamy. Chcesz się dowiedzieć więcej?';
  5.  
  6. $replace=array(' '=>'_','-'=>'',','=>'','ś'=>'s', 'ą'=>'a', 'ę'=>'e', 'ó'=>'o', 'ł'=>'l', 'ż'=>'z', 'Ľ'=>'z', 'ć'=>'c', 'ń'=>'n', 'Ś'=>'S', 'Ą'=>'A', 'Ę'=>'E', 'Ó'=>'O', 'Ł'=>'L', 'Ż'=>'Z', 'Ź'=>'Z', 'Ć'=>'C', 'Ń'=>'N');
  7.  
  8. $tekst_new = strtr($text_old, $replace);
  9.  
  10. echo $tekst_old;
  11. echo "
  12. ";
  13. echo $tekst_new;
  14. ?>

Tą tablicę zrobiłem kiedyś do zamiany polskich ogonków (w obydwu kodowaniach)... Nie wiem właśnie jak będzie z kodowaniem ale generalnie powinno działać...

EDIT: no tak... :/ tak jak myślałem... forum rozwaliło kodowanie...
twardes
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.
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.