Vanderploeg
Gebruiker
- Lid geworden
- 3 feb 2007
- Berichten
- 201
Hallo vrienden,
In php bestaan de functies ord en chr.
Ord geeft de decimale ascii-waarde van een letter aan. Bijvoorbeeld: ord('a') = 97. Want 97 is de decimale ascii-waarde van de letter a.
En chr doet het tegenovergestelde en geeft vanuit de decimale ascii-waarde de letter terug. Bijvoorbeeld: chr(97) = 'a'.
Dit werkt prima en op basis hiervan heb ik een zoekmachine gebouwd voor mijn website. De website heeft tientallen pagina's. Wellicht worden het er meer dan 100. Maar met deze zoekmachine vindt men snel ieder woord, dat op de website voorkomt, terug.
Ik zou het ook een zoekfunctie kunnen noemen. Maar een zoekfunctie zoekt meestal slechts binnen 1 pagina. (Dat kan wel een zeer lange pagina zijn). Daarom heb ik mijn 'uitvinding' een zoekmachine genoemd, temeer daar hij zich net zo gedraagt als de zoekmachine van Google. Alleen wordt er bij mij slechts binnen 1 website gezocht.
Gisteren stuitte ik echter op een probleem. Woorden met ë (een e met 2 puntjes erop), bijvoorbeeld tweeërlei, worden binnen mijn systeem niet goed verwerkt. Op de plaats van dit teken komen twee vraagtekens te staan. Ik ging op onderzoek uit en toen ontdekte ik, dat de PHP-functies ord en chr helemaal niet goed werkten bij ascii-waarden boven de 127. We zitten dan in het gebied van de extended character set.
Volgens de tabel in mijn computerboek zou ord('ë') 137 moeten zijn. Maar PHP maakt er 235 van. Dat zou niet erg zijn, als het ook weer goed werd terugvertaald. Maar dat gebeurt helaas niet. Als ik opgeef chr(235) dan geeft PHP een vraagteken terug.
Mijn vraag aan jullie is: Is hier een oplossing voor? Bestaan er binnen PHP bijvoorbeeld nog andere functies, die de tekens wel goed verwerken?
Ik werk met een laptop met Windows 7 en met Mozilla Firefox. Maar ik heb niet de indruk, dat dat iets uitmaakt. De PHP-versie, die ik gebruik, is versie 5.5.19. Dat is al lang de nieuwste versie niet meer. Maar de functies ord en chr zijn al heel oud. Ik geef mezelf weinig hoop, dat het met een nieuwere PHP-versie wel goed gaat. Het schijnt ook iets te maken te hebben met al of niet UTF-8 en dus met de charset. Maar het is mij nog niet gelukt om dit dusdanig in mijn systeem te verwerken, dat het probleem is opgelost.
In php bestaan de functies ord en chr.
Ord geeft de decimale ascii-waarde van een letter aan. Bijvoorbeeld: ord('a') = 97. Want 97 is de decimale ascii-waarde van de letter a.
En chr doet het tegenovergestelde en geeft vanuit de decimale ascii-waarde de letter terug. Bijvoorbeeld: chr(97) = 'a'.
Dit werkt prima en op basis hiervan heb ik een zoekmachine gebouwd voor mijn website. De website heeft tientallen pagina's. Wellicht worden het er meer dan 100. Maar met deze zoekmachine vindt men snel ieder woord, dat op de website voorkomt, terug.
Ik zou het ook een zoekfunctie kunnen noemen. Maar een zoekfunctie zoekt meestal slechts binnen 1 pagina. (Dat kan wel een zeer lange pagina zijn). Daarom heb ik mijn 'uitvinding' een zoekmachine genoemd, temeer daar hij zich net zo gedraagt als de zoekmachine van Google. Alleen wordt er bij mij slechts binnen 1 website gezocht.
Gisteren stuitte ik echter op een probleem. Woorden met ë (een e met 2 puntjes erop), bijvoorbeeld tweeërlei, worden binnen mijn systeem niet goed verwerkt. Op de plaats van dit teken komen twee vraagtekens te staan. Ik ging op onderzoek uit en toen ontdekte ik, dat de PHP-functies ord en chr helemaal niet goed werkten bij ascii-waarden boven de 127. We zitten dan in het gebied van de extended character set.
Volgens de tabel in mijn computerboek zou ord('ë') 137 moeten zijn. Maar PHP maakt er 235 van. Dat zou niet erg zijn, als het ook weer goed werd terugvertaald. Maar dat gebeurt helaas niet. Als ik opgeef chr(235) dan geeft PHP een vraagteken terug.
Mijn vraag aan jullie is: Is hier een oplossing voor? Bestaan er binnen PHP bijvoorbeeld nog andere functies, die de tekens wel goed verwerken?
Ik werk met een laptop met Windows 7 en met Mozilla Firefox. Maar ik heb niet de indruk, dat dat iets uitmaakt. De PHP-versie, die ik gebruik, is versie 5.5.19. Dat is al lang de nieuwste versie niet meer. Maar de functies ord en chr zijn al heel oud. Ik geef mezelf weinig hoop, dat het met een nieuwere PHP-versie wel goed gaat. Het schijnt ook iets te maken te hebben met al of niet UTF-8 en dus met de charset. Maar het is mij nog niet gelukt om dit dusdanig in mijn systeem te verwerken, dat het probleem is opgelost.