Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
gutek84
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 9.10.2007
Skąd: Morąg

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


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

Ten post edytował gutek84 2.02.2008, 16:55:51
Go to the top of the page
+Quote Post
nowotny
post
Post #3





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


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...

Ten post edytował nowotny 2.02.2008, 17:49:03
Go to the top of the page
+Quote Post
twardes
post
Post #4





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

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.09.2025 - 10:42