Waarde van een positie in een string bepalen

Status
Niet open voor verdere reacties.

Vanderploeg

Gebruiker
Lid geworden
3 feb 2007
Berichten
201
Hallo mensen,

Met het ord-commando kan men de ascii-waarde (decimaal) bepalen van het eerste teken van een string.
Stel:
$string = "helpmij";
Dan geldt: ord($string) = 104 (omdat de h een ascii-waarde van 104 heeft).

Maar is er nu helemaal geen commando om de ascii-waarde te bepalen van (bijvoorbeeld) het vierde letterteken van "helpmij"?

Het is zo, dat ik een zoekmachine wil maken voor alle pagina's (en dat zijn er tientallen) van mijn website.
Google biedt ook wel de mogelijkheid om een Google-zoekmachine op de eigen website te plaatsen, maar ik ben liever niet te veel afhankelijk van Google. Zeer vaak heb ik gemerkt, dat het scan-werk van Google onvolledig is. Vaak scande Google minder dan de helft van de pagina's. Als ik het zelf doe kan ik er zelf voor zorgen, dat het werk voor 100 % gebeurt.
En de moeilijkste problemen voor het maken van mijn eigen zoeksysteem heb ik waarschijnlijk al opgelost.

Maar omdat ik met het ord-commando alleen maar op het eerste teken van een string kon zoeken, moest ik een omweg gebruiken, om mijn doel te bereiken. En het is juist de kunst om het zoeken zo snel mogelijk te laten verlopen. Mede doordat Google zulke snelle systemen heeft, is Google zo'n succes geworden.
Daarom vraag ik jullie of er geen commando is waarmee ik direct de waarde van elk teken in een string kan bepalen.

Andersom kan het wel in een keer. Met strpos($string, "p") kom ik meteen te weten op welke positie de letter p voorkomt binnen de string "helpmij". Maar als ik wel de positie weet en nog niet het teken, zie ik nog geen mogelijkheid om direct de waarde van het teken te bepalen. Kunnen jullie mij helpen?

Met vriendelijke groeten,

Vanderploeg
 
Bedankt voor de reactie, Supersnail !
Het door u genoemde commando kende ik al. Maar ik vond het een omweg. Ik kon me niet voorstellen, dat er geen snellere weg was. Gelukkig heb ik die snellere weg inmiddels zelf gevonden. Men kan in dit geval namelijk met arrays werken! Kijk maar naar het volgende voorbeeld:

<?php
$woord = "zeedieren";
echo ord($woord[0]) . "&nbsp;&nbsp;&nbsp;" . $woord[0] . "<br>";
echo ord($woord[1]) . "&nbsp;&nbsp;&nbsp;" . $woord[1] . "<br>";
echo ord($woord[2]) . "&nbsp;&nbsp;&nbsp;" . $woord[2] . "<br>";
echo ord($woord[3]) . "&nbsp;&nbsp;&nbsp;" . $woord[3] . "<br>";
echo ord($woord[4]) . "&nbsp;&nbsp;&nbsp;" . $woord[4] . "<br>";
echo ord($woord[5]) . "&nbsp;&nbsp;&nbsp;" . $woord[5] . "<br>";
echo ord($woord[6]) . "&nbsp;&nbsp;&nbsp;" . $woord[6] . "<br>";
echo ord($woord[7]) . "&nbsp;&nbsp;&nbsp;" . $woord[7] . "<br>";
echo ord($woord[8]) . "&nbsp;&nbsp;&nbsp;" . $woord[8] . "<br>";
?>

Op deze manier is de string letter voor letter met het commando "ord" benoemd!

Met de hartelijke groeten van
Vanderploeg
 
De bovengenoemde code voor "zeedieren" heeft als uitkomst:

122 z
101 e
101 e
100 d
105 i
101 e
114 r
101 e
110 n

Links staat de decimale waarde en rechts het bijbehorende teken. Maar dat zullen de meesten al begrepen hebben. :)

Inmiddels gaat de ontwikkeling van mijn eigen zoeksysteem voorspoedig. Alleen stuitte ik op een nieuw probleem:
Met het PHP-commando file_get_contents kan men een bestand omzetten in een string. Dat is handig, want daarna kan men op de string alle commando's voor strings toepassen.
Als voorbeeld nemen we het bestand winkeloverzicht.txt.
We krijgen dan: $tekst = file_get_contents("winkeloverzicht.txt");
Met echo $tekst zien we dan de inhoud. Alle regels zijn dan wel aan elkaar geschreven, maar daar had ik tot op heden nog geen last van. Als het bestand "winkeloverzicht.txt" gewoon zuivere tekst bevat, dan gaat het goed. Maar als "winkeloverzicht.txt" ook HTML-code en PHP-code bevat, dan gaat het fout. Bij echo $tekst wordt er dan gereageerd op die code, terwijl dat helemaal niet de bedoeling is. De code moet gewoon worden weergegeven, zoals die is. Ik heb al geprobeerd om de tekst tussen commentaartekens te plaatsen. Maar ook dan werd de inhoud van "winkeloverzicht.txt" niet goed weergegeven.

Weten jullie hiervoor een oplossing?
 
htmlspecialchars gebruiken?

PHP:
$tekst = file_get_contents("winkeloverzicht.txt");
echo htmlspecialchars ( $tekst );
 
Ja, dit is inderdaad de oplossing!! Door allerlei proeven te doen, had ik al gemerkt, dat de echo-functie zich in die HTML-tags verslikt! En het bestand begint gelijk al met <!DOCTYPE, dus gelijk al bij het eerste teken gaat het mis.

Maar met htmlspecialchars gaat het inderdaad goed. Hartelijk dank! :thumb: :)
 
Dank zij jullie hulp is mijn zelfgemaakte zoekmachine een succes geworden! Dit wil nog niet zeggen, dat ik nu een concurrent van Google ben geworden, hoor! ;) Het bijzondere van Google vind ik, dat zijn zoekmachine zo razendsnel is, zelfs als miljarden internet-pagina's worden doorzocht. Zo'n snelheid zal ik waarschijnlijk nooit bereiken.

Maar dat hoeft ook helemaal niet. Het is ook al leuk als ik een website van bijvoorbeeld 100 pagina's in één keer en vrij snel kan laten doorzoeken.

Verder kan ik nu 2 varianten van de zoekmachine maken. De eerste doorzoekt alleen de teksten van een website. De tweede zoekt ook naar alle codes en HTML-tags. Dit is handig om mijn eigen programmeerwerk op mogelijke fouten te doorzoeken. Tot nu toe moest ik dat bestand voor bestand doen. Maar met het nieuwe systeem gaat alles in één keer.

Nogmaals hartelijk dank voor jullie hulp! Deze thread zet ik nu op opgelost. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan