login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Gedeelte van een URL vervangen

Offline bertenz - 15/07/2007 12:55
Avatar van bertenzHTML beginner Hallo allemaal,

Mijn website kan op het moment in 2 talen worden weergegeven (Engels en Nederlands). Op het moment regel ik dat nog met Sessies, maar als iemand dan via Google op de website komt, krijgt diegene altijd de standaard taal (Nederlands) te zien (Terwijl er op Google aangegeven wordt dat het Engelstalig is), toch ??
Daarom wil ik weer terug naar mijn oorspronkelijke idee, om de taal mee te geven in de link, dus "-- url --&lang=eng". Als je dan op een vlaggetje klikt, wordt er weer "lang=" achter geplakt. Ik zou echter graag de bestaande "lang" in de URL willen vervangen ipv. de link langer maken. Omdat je overal op de website van taal moet kunnen wisselen, kan de URL van alles zijn. Ik zat zelf te denken aan het gebruik van "explode()", maar ik weet niet zeker of het dan altijd werkt. Iemand enig idee of dat handig is of dat er een (veel) betere manier is ??

Bertenz

6 antwoorden

Gesponsorde links
Offline marten - 15/07/2007 13:00
Avatar van marten Beheerder uhm je kan hem gewoon overschrijven?

www.domein.nl/index.php?lang=en

wordt

www.domein.nl/index.php?lang=nl
Offline bertenz - 15/07/2007 13:36 (laatste wijziging 15/07/2007 13:42)
Avatar van bertenz HTML beginner Zou normaal wel kunnen, maar als de huidige URL het volgende is:
www.domein.nl/index.php?page=results&......&lang=en

moet de nieuwe URL het volgende worden:
www.domein.nl/index.php?page=results&......&lang=nl

doordat de huidige URL alles kan zijn, kan ik dus niet zomaar een vervangende URL opgeven.

Edit: Ik weet dus dat het ook gewoon mogelijk is om www.domein.nl/index.php?page=results&......&lang=en&lang=nl te maken, maar ik zoek eigenlijk naar een mooiere oplossing
Offline Ibrahim - 15/07/2007 17:15 (laatste wijziging 15/07/2007 17:15)
Avatar van Ibrahim PHP expert in php kun je lang zijn waarde wijzigen door $_GET te gebruiken:

  1. <?php
  2.  
  3. echo $_GET['lang']; // misschien is het nu en
  4.  
  5. $_GET['lang'] = 'nl';
  6.  
  7. echo $_GET['lang']; // nu is dit nl
Offline Grayen - 15/07/2007 19:56 (laatste wijziging 16/07/2007 14:34)
Avatar van Grayen PHP ver gevorderde De mooiste manier vindt ik de volgende:

  1. <?php
  2. function changeUrl($uKey, $sValue = '')
  3. {
  4. parse_str($_SERVER['QUERY_STRING'], $aGet);
  5.  
  6. if(is_array($uKey))
  7. {
  8. foreach($uKey as $sKey => $sValue)
  9. {
  10. $aGet[$sKey] = $sValue;
  11. }
  12. }
  13. else
  14. {
  15. $aGet[$uKey] = $sValue;
  16. }
  17.  
  18. return http_build_query($aGet);
  19. }
  20.  
  21. if(!function_exists('http_build_query'))
  22. {
  23. function http_build_query($aQuery, $sPrefix = '', $sSeparator = '', $sArray = '')
  24. {
  25. $aNewQuery = array();
  26.  
  27. foreach($aQuery as $sKey => $uValue)
  28. {
  29. if(is_int($sKey) && !empty($sPrefix) && empty($sArray))
  30. {
  31. $sKey = $sPrefix.$sKey;
  32. }
  33.  
  34. if(!empty($sArray))
  35. {
  36. $sKey = $sArray.urlencode('['.$sKey.']');
  37. }
  38. else
  39. {
  40. $sKey = urlencode($sKey);
  41. }
  42.  
  43. if(is_array($uValue) || is_object($uValue))
  44. {
  45. array_push($aNewQuery, http_build_query($uValue, $sPrefix, $sSeparator, $sKey));
  46. }
  47. else
  48. {
  49. array_push($aNewQuery, $sKey.'='.urlencode($uValue));
  50. }
  51. }
  52.  
  53. if(empty($sSeparator))
  54. {
  55. # Het @-teken indien de functie is uitgeschakeld.
  56. $sSeparator = @ini_get('arg_separator.output');
  57.  
  58. # ini_get geeft '' als het fout gaat.
  59. if(empty($sSeparator))
  60. {
  61. $sSeparator = '&';
  62. }
  63. }
  64.  
  65. return implode($sSeparator, $aNewQuery);
  66. }
  67. }
  68. ?>


En dan kan je jouw lang variable heel simpel aanpassen door het volgende te doen:

  1. changeUrl('lang', 'en');


Of door een array mee te geven:

  1. changeUrl(array
  2. (
  3. 'lang' => 'en',
  4. 'key' => 'value',
  5. // etc.
  6. ));


Hoop dat je hem kan gebruiken .
Offline bertenz - 15/07/2007 23:11 (laatste wijziging 16/07/2007 11:43)
Avatar van bertenz HTML beginner Hartstikke bedankt. Ik ga morgen uitzoeken wat het allemaal doet en hoe ik het in mijn pagina's kan zetten. Nogmaals bedankt he.

Bertenz

Edit: Ik heb het script vanochtend even doorgenomen en gekeken wat alle onderdelen precies deden. Het script werkt in principe wel, behalve als ik voor de taal "lang=" gebruik. Bij elk ander woord (dat ik getest heb  ) krijg ik een correcte link terug, maar als ik "lang" gebruik, krijg ik het volgende te zien:
"page=resorts&#9001;=en" (en het zou "page=resorts&lang=en" moeten zijn). Weet iemand of "lang" een gereserveerd woord is ofzo, of hoe dit anders komt ??

ps. ik krijg dus niet de code &#9001; te zien, maar het teken waar die code voor staat, maar dat begrepen jullie wellicht al.
Offline Grayen - 16/07/2007 13:22 (laatste wijziging 16/07/2007 14:17)
Avatar van Grayen PHP ver gevorderde Het is gewoon in orde hoor. Heb het even getest, het probleem zit hem erin dat &lang blijkbaar voor een teken staat, maar als je hem gewoon in een script gebruikt maakt dit niet uit, tenzij je de url wilt gaan outputen als tekst, wat mij sterk lijkt. Als je hem output (bijvoorbeeld als href van een link) dan is het verstandig om..

  1. http_build_query($array, '', '&amp;');


..te gebruiken

Dus &lang is blijkbaar een entitie (ik dacht dat het altijd &naam; moest zijn . Het kan blijkbaar zonder die ; bij sommige).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.505s