Entity decode in SQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Barman V

Barman V

22/03/2007 09:56:00
Quote Anchor link
Beste lezer,

Om direct met mijn vraag te komen. Bestaat er ook een html_entity_decode in SQL?

Ik ben bezig aan een zoekmachine voor een site. Hij moet zoeken in tabelcellen die vol staan met html code, maar ik wil niet dat als men bijvoorbeeld het woord "class" of "href" zoekt, dat mijn zoekmachine dan op tilt slaat.

Dus ik ben op zoek naar een soort

SELECT HTML_ENTITY_DECODE(pageBody) AS searchHit
FROM .... WHERE searchHit LIKE '%<<<zoekterm>>>>%'

Alvast bedankt.
 
PHP hulp

PHP hulp

17/11/2024 19:38:38
 
Joren de Wit

Joren de Wit

22/03/2007 13:51:00
Quote Anchor link
Ik snap niet helemaal wat je bedoeld. De woorden als 'class' en 'href' worden toch niet beinvloed door html_entity_decode? Wat is dus eigenlijk precies je doel wat je met die functie zou willen bereiken?
 
Barman V

Barman V

22/03/2007 14:11:00
Quote Anchor link
Bedankt voor je reactie. Laat ik het even wat duidelijker uitleggen.

De body (incl HTML code) van elke pagina is opgenomen in de database.

Dus...
SELECT body
FROM contentpage
WHERE pageid = '2'

...geeft bijvoorbeeld het volgende...

<p class="alinea">Blabla Blabla <strong>VET</strong></p>

Nu wil ik dat mijn zoekmachine alleen zoekt op Blabla en VET. Dus ik wil niet dat als iemand op het woord "class" of "strong" zoekt, dat de bovenstaande HTML regel gevonden wordt.

Hoe zorg ik er voor dat het systeem enkel zoekt in de plaintekst en niet in de HTML code? Moet ik dit echt met PHP gaan oplossen, of heeft mysql daar een handig foefje voor?

Is het nu wat duidelijker?
 
Joren de Wit

Joren de Wit

22/03/2007 14:18:00
Quote Anchor link
Jep, dat is eigenlijk ook wel wat ik dacht dat je bedoelde. Maar dan heb je dus niet zoveel aan de functie html_entity_decode()...

Je zult in jouw geval gebruik moeten maken van een reguliere expressie in je select query om alleen bepaalde delen uit je tekst te selecteren. Zie ook dit hoofdstuk uit de mysql handleiding.

Maar verder blijkt dat het opslaan van html in de database nooit zo slim is. In de meeste gevallen is het vaak slimmer om gebruik te maken van ubb code en dat pas om te zetten zodra je tekst uit de database selecteert.
 
Barman V

Barman V

22/03/2007 15:30:00
Quote Anchor link
Geniaal, het werkt.

Ik gaf inderdaad een verkeerd voorbeeld met HTML_ENTITY_DECODE.

Misschien wel interessant voor de lezers

Situatie:
Je hebt een zoekmachine op je site. Je wil natuurlijk niet dat als mensen zoeken naar "class" dat hij dan <p class="blaat"> ook vindt.
Dit geval kom ik heeeeeel vaak tegen bij zoekmachines op andere sites.

Oplossing:
SELECT *
FROM page
WHERE body REGEXP "(>[^<]*)(zoekwoord1|zoekwoord2|zoekwoord3)";

Wil je exacte woordcombinaties maken, doe dan niet "zoekwoord1|zoekwoord2|zoekwoord3", maar doe dan bijvoorbeeld "zoekwoord1 zoekwoord2|zoekwoord3" (dus zonder de | )
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.