[PHP] vreemde tekens met url rewrite vervangen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
met het herschrijven van url met multiviews loop ik tegen het probleem dat de adresbalk geen
umlaut's e.d. (ë, ï, í, é) teruggeeft om uit te lezen.
Ik wil namelijk later weer een query uitvoeren op de titel bijvoorbeeld.

voorbeeld:

/pagina/nieuws/leuke_ideëen_ofzo/

met multiviews (dus niet met mod_rewrite) hak ik de url in stukken en query ik op hetvolgende:
het hakken:
PHP:
1
$var = explode('/' ,  str_replace(' ','_',$_SERVER['REQUEST_URI']));


maar de gehakte url wordt leuke_ide%C3%ABen_ofzo
de ë wordt %C3$AB

select * from nieuwe where title = $var['3']

en met de query heeft hij dus geen resultaat omdat puntjes op de e staan in de database...

---

Ik heb het geprobeerd met urlencode(), maar dit lost het niet op..

is hier een functie voor?? of heeft iemand een andere oplossing hiervoor..

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
http://nl.php.net/urldecode :?

Daarbij is het (IMHO) sowieso ranzig om dit soort tekens in url's te gebruiken. AFAIK is ondersteuning nog onderweg (en dus niet formeel), maar pin me daar niet op vast (RFC 2396 / RFC3986). En wat doen die trema's er nou toe in een url?

[ Voor 101% gewijzigd door RobIII op 30-07-2008 09:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Japius
  • Registratie: April 2003
  • Laatst online: 30-08 20:57
The effect of MultiViews is as follows: if the server receives a request for /some/dir/foo, if /some/dir has MultiViews enabled, and /some/dir/foo does not exist, then the server reads the directory looking for files named foo.*, and effectively fakes up a type map which names all those files, assigning them the same media types and content-encodings it would have if the client had asked for one of them by name. It then chooses the best match to the client's requirements.
Misschien begrijp ik je niet goed, maar wat doe je met die query? Apache handelt alles al af toch?

Acties:
  • 0 Henk 'm!

Verwijderd

Wat Robll zegt en:
Het is een hele goede gewoonte om voor url's trema (diacritische tekens) te verwijderen en dus enkel de basis letter te gebruiken (negeer de puristen die zeggen dat het niet dezelfde letter is). Google indexeert een dergelijke url namelijk verdomde goed en het is doorgaans wat gebruikers intypen bij google.

Acties:
  • 0 Henk 'm!

Verwijderd

Wat hij bedoelt is

Als hij nu heeft staan:
http://mijnsite.nl/Mijn_ëigen_link.html

Dat hij de NIET a-Z0-9_ karakters wilt wegwerpen of vervangen.

Wat hij kan doen:
PHP:
1
2
3
4
$link = 'Mijn ëigen link';
preg_replace ('#[a-zA-Z0-9\s_-]+#', '-', $link);
str_replace (' ', '_', $link);
$link = 'Mijn_-igen_link'; // krijg je als resultaat


Of wat je kunt doen:
PHP:
1
2
3
4
5
6
7
$link   = 'Mijn ëigen link';

$arrayL = array ('ë', ' ');
$arrayR = array ('e', '_');

$link   = str_replace ($arrayL, $arrayR, $link);
$link   = 'Mijn_eigen_link'; // krijg je dan

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Euh...
Verwijderd schreef op woensdag 30 juli 2008 @ 09:51:

Dat hij de NIET a-Z0-9_ karakters wilt wegwerpen of vervangen.
En vervolgens:
Verwijderd schreef op woensdag 30 juli 2008 @ 09:51:
Wat hij kan doen:
PHP:
1
<snip>Hier werp je ze weg???</snip>
Verwijderd schreef op woensdag 30 juli 2008 @ 09:51:
Of wat je kunt doen:
PHP:
1
<snip>Hier vervang je ze????</snip>
Dus je spreekt jezelf tegen?

En, zoals ik het topic lees, gaat het niet over het outputten van (encoded) URL's want hij heeft het over mod_rewrite en die houdt zich bezig met 'binnenkomende' URL's. En hij doet een explode op $_SERVER['REQUEST_URI']. Lijkt me nogal een giveaway ;)

[ Voor 49% gewijzigd door RobIII op 30-07-2008 10:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil idd de tekens ook niet naar de url sturen. Dit doen sites als spitsnieuws.nl enzo ook niet.
wat urlencode() doet is van spaties + tekens maken enzo. Dit is ook niet de bedoeling.

Maar het lijkt mij de dat ik de ingreep moet doen op het moment dat ik de link naar de adresbalk schiet. Maar charakters replacen is de enige oplossing?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 30 juli 2008 @ 10:14:
Maar het lijkt mij de dat ik de ingreep moet doen op het moment dat ik de link naar de adresbalk schiet.
Naar de adresbalk schiet :?
Je moet gewoon bij het genereren van je HTML zorgen dat je URL's geldig 'encode'. En als je geen spaties wil of andere gekke tekens dan zul je die of zelf moeten vervangen zoals Sean K aangeeft, of op urlEncode verder bouwen. Again, je wil helemaal geen ranzige zut in je URL, dus spaties e.d. zijn sowieso al niet gewenst, laat staat diacritische tekens.
Wat misschien nog handiger is is om je artikel een extra veld te geven (soort "key") om daar de 'url friendly' versie van je titel in te zetten. Dan hoef je niet te encoden bij het outputten van je URL en niet te decoden bij het binnenkomen van je URL. Je moet (eventueel) alleen even oppassen bij het aanmaken/updaten van een artikel, dan moet je eenmalig bij de insert/update even zorgen dat je een 'friendly' versie maakt.

[ Voor 26% gewijzigd door RobIII op 30-07-2008 10:20 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
RobIII schreef op woensdag 30 juli 2008 @ 09:40:
AFAIK is ondersteuning nog onderweg (en dus niet formeel) (...) En wat doen die trema's er nou toe in een url?
Tsja, trema's doen er iha niet zo toe (behalve dat ze je tekst correct houden). Het is alleen wel verdomd handig als je ook Japanse, of Arabische, of (...) titels ondersteunt, zondat dat je titel 'Kijk, ik kan japans: たのしい' opeens 'Kijk, ik kan japans: ????' wordt in je URL.

Support is misschien unofficieel, maar een van de grootste sites ter wereld maakt er zo veelvuldig gebruik van dat dát me niet zo'n probleem lijkt.

Oftewel: niks niet diakrieten weghalen: urldecoden en Joels stukje over encodings nog eens een keertje doorlezen.

[ Voor 32% gewijzigd door ValHallASW op 30-07-2008 11:05 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ValHallASW schreef op woensdag 30 juli 2008 @ 10:57:
Oftewel: niks niet diakrieten weghalen: urldecoden
en encoden ;)
Trust me, daar ben ik wel bekend mee. Post 'm regelmatig zelf :Y) Interessanter is deze ;)

[ Voor 11% gewijzigd door RobIII op 30-07-2008 11:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

ValHallASW schreef op woensdag 30 juli 2008 @ 10:57:
Oftewel: niks niet diakrieten weghalen: urldecoden en Joels stukje over encodings nog eens een keertje doorlezen.
Hangt sterk af van je doel. Om je URL's SEO te krijgen wil je zeker weten wel diakriten eruit halen. Gebruikers typen nou eenmaal niet zoveel diakritische tekens in zoekformulieren.

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Verwijderd schreef op woensdag 30 juli 2008 @ 11:04:
[...]
Hangt sterk af van je doel. Om je URL's SEO te krijgen wil je zeker weten wel diakriten eruit halen. Gebruikers typen nou eenmaal niet zoveel diakritische tekens in zoekformulieren.
[[citation needed]]. Zoekmachines zijn echt wel slim genoeg om daar zélf rekening mee te houden. Het is de taak van de webmaster om correcte informatie aan te bieden, het is de taak van de zoekmachine om met dit soort grappen rekening te houden. En guess what: google, MSN en ook cuil snappen het gewoon.

[ Voor 3% gewijzigd door ValHallASW op 30-07-2008 11:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

ValHallASW schreef op woensdag 30 juli 2008 @ 11:10:
[[citation needed]]. Zoekmachines zijn echt wel slim genoeg om daar zélf rekening mee te houden.
Die snappen dat inderdaad prima en je wordt nog beter gesnapt als je de diacriten er vanaf haalt. Oftewel een hogere waardering.
Pagina: 1