PHP urlencode težava
 
esedic 7. maj 2013 10:47:14 Pridružen od:
28. nov 2007
368 objav
184 13 4
#1

V kodi imam spremenljivko $item->title, ki mi vrne vrednost 'Tržnica Bežigrad'.

Želim sestaviti URL, ki bo vključeval to besedo, samo da bo namesto presledka + in da bodo šumniki kodirani.



Ko v kodi testiram vrednosti dobim tole:


<?php
echo $item->title; // vrne Tržnica Bežigrad
echo urlencode($item->title); // vrne Tr%C5%BEnica+Be%C5%BEigrad
?>

urlencode mi vrne točno to, kar rabim.



Ko pa v kodi sestavim URL takole


<a href="index.php&searchword=<?php echo urlencode($item->title); ?>">link</a>

dobim namesto znaka + zakodiran presledek (%20) in sicer dobim tak URL:

index.php&searchword=Tr%C5%BEnica%20Be%C5%BEigrad



Ni mi jasno zakaj se to dogaja.


všeč(0) ni všeč(0) spam(0)
 
Lucifix 7. maj 2013 10:55:01 Pridružen od:
14. okt 2008
744 objav
438 12 0
#2

Lahko probaš s "primitivno" tehniko (samo primer):


$text = str_replace(array("š","č","ž"),array("s","c",z"),$text);

Via:

http://stackoverflow.com/questions/9252938/php-converting-special-characters-like-s-to-s-to-t-to-a



Dodatek:

http://iamseanmurphy.com/creating-seo-friendly-urls-in-php-with-url-slug/


všeč(0) ni všeč(0) spam(0)
 
Mešetar 7. maj 2013 11:11:35 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#3

unrlencodan presledek je v URLjih vedno %20,



za silo lahko naredis:


<a href="index.php&searchword=<?php echo urlencode(str_replace(" ", "+", $item->title)); ?>">link</a>

kjer ti str_replace zamenja presledke s plusi.... ampak mislim, da se tudi plusi pol zamenjajo v urlrewritu, nisem ziher


všeč(0) ni všeč(0) spam(0)
 
esedic 7. maj 2013 11:20:20 Pridružen od:
28. nov 2007
368 objav
184 13 4
#4

Se mi zdi da je težava v tem, da imam na strani vklopljene SEO URL-je in mi vsakič zamenja + z %20. Ker sem že prej probal z strreplace in pregreplace, ampak so se mi vsakič zgenerirali URL-ji z %20 namesto +, čeprav je echo strreplace($item->title) ali pregreplace($item->title) vrnil vrednost z +.


všeč(0) ni všeč(0) spam(0)
 
esedic 7. maj 2013 12:59:21 Pridružen od:
28. nov 2007
368 objav
184 13 4
#5

Situacija je sedaj takšna:



Z preg_replace zamenjam presledek z kodiranim znakom za + (%2B)


$itemtitle = preg_replace('/\s+/', '%2B', $item->title);

Potem pa sestavim link takole:


<a href="index.php&searchword=<?php echo urlencode($itemtitle); ?>">link</a>

Hecno je to, da se v Firefoxu in Chrome URL prikaže kot


index.php&?searchword=Tr%C5%BEnica+Be%C5%BEigrad

kar je ok, medtem ko se v IE prikaže kot


index.php&?searchword=Tržnica+Bežigrad

Ta link načeloma deluje, če pa ga odprem v novem zavihku, pa ne.

Očitno ima IE neko svojo logiko pri kodiranju special characters.



Nič jasno :/


všeč(0) ni všeč(0) spam(0)
 
Mešetar 7. maj 2013 13:13:09 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#6

join the club ;) s tvojo kodo ni nic narobe, ce dela ok na chrome in FFju.... always assume it is IE's fault... tak da se niti ne sekiraj naprej [:D]...



vseeno pa je najboljsa praksa, da vse URLje slugiziras, kar pomeni, da jih naredis cimbolj standard pravilne..sumnike zamenjas s sicniki, druge special znake pa s pomisljaji (vkljucno s spaci)...in seveda vse male crke!



index.php&?searchword=Tržnica+Bežigrad =>

index.php&?searchword=trznica-bezigrad



ce rabis dobro SLUGIZE funkcijo, ti jo lahko na privat posredujem


všeč(1) ni všeč(0) spam(0)
 
Gogy 7. maj 2013 20:12:22 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#7

@Mešetar, sicer ne potrebujem v tem trenutku ampak mi bo prav prišlo. Pošlješ prosim še meni?


všeč(0) ni všeč(0) spam(0)
 
Mešetar 7. maj 2013 20:35:14 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#8

sure, daj mi mejl na PM


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se