PDA

Bekijk Volledige Versie : [php] str_replace en hoofd/kleine letters



Erik vd Grinten
30/12/03, 16:15
In mijn script heb ik het volgende stukje code staan:

$inh = str_replace($srch,"<span class=\"nm\">$srch</span>",$inh);

Op zich werkt dit goed, behalve dat in het veld $inhoud de tekst soms
met 'n hoofdletter staat geschreven, en soms niet. Als in het zoekveld
de zoekterm niet met 'n hoofdletter wordt geschreven, wordt het
betreffende veld wel gevonden (dat is ook de bedoeling). De replace
werkt dan echter niet. Door het als volgt aan te passen krijg ik het
wel werkend.
$inh = str_replace(ucfirst($srch),"<span
class=\"nm\">$srch</span>",$inh);

Nu doet zich weer het probleem voor dat de zoekterm ook een gedeelte
van een woord kan zijn, er wordt bijvoorbeeld gezocht op "light" en
dan wordt ook een record gevonden waar het woord "limelight" in
voorkomt. De str_replace() werkt dan weer niet omdat dit niet met een
hoofdletter is geschreven in het veld. Hoe krijg ik het voor elkaar om
ongeacht de schrijfwijze de zoekterm te vervangen?

Jan Ehrhardt
30/12/03, 16:30
Erik vd Grinten in nl.internet.www.server-side (30 Dec 2003 07:05:54
-0800):

>In mijn script heb ik het volgende stukje code staan:
>
>$inh = str_replace($srch,"<span class=\"nm\">$srch</span>",$inh);
>
>Op zich werkt dit goed, behalve dat in het veld $inhoud de tekst soms
>met 'n hoofdletter staat geschreven, en soms niet.

http://www.php.net/str_ireplace

Jan
--
Look, Ma. No tables - http://www.steenbergen-stichting.nl/enbio.html

John Bokma
30/12/03, 18:45
Erik vd Grinten wrote:

> In mijn script heb ik het volgende stukje code staan:
>
> $inh = str_replace($srch,"<span class=\"nm\">$srch</span>",$inh);
>
> Op zich werkt dit goed, behalve dat in het veld $inhoud de tekst soms
> met 'n hoofdletter staat geschreven, en soms niet. Als in het zoekveld
> de zoekterm niet met 'n hoofdletter wordt geschreven, wordt het
> betreffende veld wel gevonden (dat is ook de bedoeling). De replace
> werkt dan echter niet. Door het als volgt aan te passen krijg ik het
> wel werkend.
> $inh = str_replace(ucfirst($srch),"<span
> class=\"nm\">$srch</span>",$inh);
>
> Nu doet zich weer het probleem voor dat de zoekterm ook een gedeelte
> van een woord kan zijn, er wordt bijvoorbeeld gezocht op "light" en
> dan wordt ook een record gevonden waar het woord "limelight" in
> voorkomt. De str_replace() werkt dan weer niet omdat dit niet met een
> hoofdletter is geschreven in het veld. Hoe krijg ik het voor elkaar om
> ongeacht de schrijfwijze de zoekterm te vervangen?

eh, wat dacht je van alles lowercase te maken en bij het zoeken ook? Ik
weet niet waar je in zoekt..

--
Kind regards, without shoes
John in my private hell
running naked
http://johnbokma.com/ a wishing well

Erik vd Grinten
31/12/03, 09:00
Jan Ehrhardt <monitor@idem.invalid> wrote
> Erik vd Grinten in nl.internet.www.server-side (30 Dec 2003 07:05:54
> -0800):
>
> >In mijn script heb ik het volgende stukje code staan:
> >
> >$inh = str_replace($srch,"<span class=\"nm\">$srch</span>",$inh);
> >
> >Op zich werkt dit goed, behalve dat in het veld $inhoud de tekst soms
> >met 'n hoofdletter staat geschreven, en soms niet.
>
> http://www.php.net/str_ireplace

Helaas, die is alleen voor PHP 5, ik moet het doen met PHP 4.1.2 :-(

Erik vd Grinten
31/12/03, 09:00
John Bokma <postmaster@castleamber.com> wrote
> > Nu doet zich weer het probleem voor dat de zoekterm ook een gedeelte
> > van een woord kan zijn, er wordt bijvoorbeeld gezocht op "light" en
> > dan wordt ook een record gevonden waar het woord "limelight" in
> > voorkomt. De str_replace() werkt dan weer niet omdat dit niet met een
> > hoofdletter is geschreven in het veld. Hoe krijg ik het voor elkaar om
> > ongeacht de schrijfwijze de zoekterm te vervangen?
>
> eh, wat dacht je van alles lowercase te maken en bij het zoeken ook? Ik
> weet niet waar je in zoekt..

Ik zoek in een database, waarin stukken tekst staan die al dan niet
met hoofdletters zijn geschreven. En die ook op die manier weergegeven
moeten worden. Het ene record kan het woord "Light" bevatten en het
andere record "light", en toch moeten beide records gevonden worden
als er gezocht wordt op "light" of "Light". Dat is het probleem niet,
maar in de zoekresultaten moet het gevonden woord gemarkeerd worden,
dus wederom ongeacht hoofdletter of kleine letter.

Met de voorgestelde str_ireplace() kan ik helaas niets (zie andere
bericht).

Anders Floor
31/12/03, 09:30
Erik vd Grinten wrote:

>Met de voorgestelde str_ireplace() kan ik helaas niets (zie andere
>bericht).

Kijk eens bij eregi_replace()

Is relatief een stuk langzamer dan str_replace() maar als je het niet
intensief gebruikt zul je in de praktijk nauwelijk verschil merken.

Anders

Nico Coesel
31/12/03, 13:15
google@erikvdgrinten.nl (Erik vd Grinten) wrote:

>John Bokma <postmaster@castleamber.com> wrote
>> > Nu doet zich weer het probleem voor dat de zoekterm ook een gedeelte
>> > van een woord kan zijn, er wordt bijvoorbeeld gezocht op "light" en
>> > dan wordt ook een record gevonden waar het woord "limelight" in
>> > voorkomt. De str_replace() werkt dan weer niet omdat dit niet met een
>> > hoofdletter is geschreven in het veld. Hoe krijg ik het voor elkaar om
>> > ongeacht de schrijfwijze de zoekterm te vervangen?
>>
>> eh, wat dacht je van alles lowercase te maken en bij het zoeken ook? Ik
>> weet niet waar je in zoekt..
>
>Ik zoek in een database, waarin stukken tekst staan die al dan niet
>met hoofdletters zijn geschreven. En die ook op die manier weergegeven
>moeten worden. Het ene record kan het woord "Light" bevatten en het
>andere record "light", en toch moeten beide records gevonden worden
>als er gezocht wordt op "light" of "Light". Dat is het probleem niet,
>maar in de zoekresultaten moet het gevonden woord gemarkeerd worden,
>dus wederom ongeacht hoofdletter of kleine letter.

Als je per woord wilt markeren, dan splits je waarschijnlijk de tekst
al op in woorden? Als je dat doet, dan kun je woord voor woord
controleren of het gevonden is. De vergelijking kun je doen op basis
van upper of lowercase, voor de weergave gebruik je de originele
schrijfwijze met hoofd en kleine letters.

--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl

Hans
01/01/04, 02:45
On Wed, 31 Dec 2003 12:13:58 GMT, Nico Coesel <nico@puntnl.niks> wrote:
> google@erikvdgrinten.nl (Erik vd Grinten) wrote:
>
>>John Bokma <postmaster@castleamber.com> wrote

>>> > voorkomt. De str_replace() werkt dan weer niet omdat dit niet met een
>>> > hoofdletter is geschreven in het veld. Hoe krijg ik het voor elkaar om
>>> > ongeacht de schrijfwijze de zoekterm te vervangen?
>>>
>>> eh, wat dacht je van alles lowercase te maken en bij het zoeken ook? Ik
>>> weet niet waar je in zoekt..
>>
>>Ik zoek in een database, waarin stukken tekst staan die al dan niet
>>met hoofdletters zijn geschreven. En die ook op die manier weergegeven
>>moeten worden. Het ene record kan het woord "Light" bevatten en het
>>andere record "light", en toch moeten beide records gevonden worden
>>als er gezocht wordt op "light" of "Light". Dat is het probleem niet,
>>maar in de zoekresultaten moet het gevonden woord gemarkeerd worden,
>>dus wederom ongeacht hoofdletter of kleine letter.
>
> Als je per woord wilt markeren, dan splits je waarschijnlijk de tekst
> al op in woorden? Als je dat doet, dan kun je woord voor woord
> controleren of het gevonden is. De vergelijking kun je doen op basis
> van upper of lowercase, voor de weergave gebruik je de originele
> schrijfwijze met hoofd en kleine letters.

Ik zal wel blond wezen hoor maar waarvoor zijn functies als LCASE en
LOWER in sql? Als je ieder woord wil vergelijken wordt het een duur grapje.

Hans (prettig nieuwjaar trouwens allemaal)


>


--
http://spamikaze.nl.linux.org/

John Bokma
01/01/04, 23:15
Erik vd Grinten wrote:

> John Bokma <postmaster@castleamber.com> wrote
>
>>>Nu doet zich weer het probleem voor dat de zoekterm ook een gedeelte
>>>van een woord kan zijn, er wordt bijvoorbeeld gezocht op "light" en
>>>dan wordt ook een record gevonden waar het woord "limelight" in
>>>voorkomt. De str_replace() werkt dan weer niet omdat dit niet met een
>>>hoofdletter is geschreven in het veld. Hoe krijg ik het voor elkaar om
>>>ongeacht de schrijfwijze de zoekterm te vervangen?
>>
>>eh, wat dacht je van alles lowercase te maken en bij het zoeken ook? Ik
>>weet niet waar je in zoekt..
>
>
> Ik zoek in een database, waarin stukken tekst staan die al dan niet
> met hoofdletters zijn geschreven. En die ook op die manier weergegeven
> moeten worden. Het ene record kan het woord "Light" bevatten en het
> andere record "light", en toch moeten beide records gevonden worden
> als er gezocht wordt op "light" of "Light". Dat is het probleem niet,
> maar in de zoekresultaten moet het gevonden woord gemarkeerd worden,
> dus wederom ongeacht hoofdletter of kleine letter.
>
> Met de voorgestelde str_ireplace() kan ik helaas niets (zie andere
> bericht).

Hoe zoek je? Ik vermoed overigens dat je met een beetje database een
veld gewoon lowercase kan maken voor je gaat vergelijken, of sterker,
dat er een case insensitive vergelijking bestaat. Lees de docu van je DB.

--
Kind regards, without shoes
John in my private hell
running naked
http://johnbokma.com/ a wishing well

John Bokma
01/01/04, 23:15
Hans wrote:

> Ik zal wel blond wezen hoor maar waarvoor zijn functies als LCASE en
> LOWER in sql? Als je ieder woord wil vergelijken wordt het een duur grapje.

Yup, ik snap niet dat mensen dit soort grappen in een programmeertaal
zitten te hacken terwijl een beetje DB dit zelf al doet en vaak veel
sneller...

Meest enge wat ik ooit tegen gekomen ben was een JOIN geprogrameerd in
de programmeertaal :-D. Slurp ene tabel, Slurp andere tabel enz.

--
Kind regards, without shoes
John in my private hell
running naked
http://johnbokma.com/ a wishing well

Hans
01/01/04, 23:45
On Thu, 01 Jan 2004 23:03:39 +0100, John Bokma <postmaster@castleamber.com> wrote:
> Hans wrote:
>
> Meest enge wat ik ooit tegen gekomen ben was een JOIN geprogrameerd in
> de programmeertaal :-D. Slurp ene tabel, Slurp andere tabel enz.

Eeeks

Hans
>


--
http://spamikaze.nl.linux.org/

Nico Coesel
02/01/04, 01:30
John Bokma <postmaster@castleamber.com> wrote:

>Hans wrote:
>
>> Ik zal wel blond wezen hoor maar waarvoor zijn functies als LCASE en
>> LOWER in sql? Als je ieder woord wil vergelijken wordt het een duur grapje.
>
>Yup, ik snap niet dat mensen dit soort grappen in een programmeertaal
>zitten te hacken terwijl een beetje DB dit zelf al doet en vaak veel
>sneller...

En meestal net niet wat je wilt... Lees de wensen van de OP nog maar
eens door. Gaat je niet lukken zonder programmeerwerk.

--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl

Hans
02/01/04, 01:45
On Fri, 02 Jan 2004 00:27:45 GMT, Nico Coesel <nico@puntnl.niks> wrote:
> John Bokma <postmaster@castleamber.com> wrote:
>
>>Hans wrote:
>>
>>> Ik zal wel blond wezen hoor maar waarvoor zijn functies als LCASE en
>>> LOWER in sql? Als je ieder woord wil vergelijken wordt het een duur grapje.
>>
>>Yup, ik snap niet dat mensen dit soort grappen in een programmeertaal
>>zitten te hacken terwijl een beetje DB dit zelf al doet en vaak veel
>>sneller...
>
> En meestal net niet wat je wilt... Lees de wensen van de OP nog maar
> eens door. Gaat je niet lukken zonder programmeerwerk.

SELECT foo FROM bar WHERE foo = LOWER(foo)....


Hans
>


--
http://spamikaze.nl.linux.org/

Nico Coesel
02/01/04, 12:15
Hans <nomailwanted@e35203.upc-e.chello.nl> wrote:

>On Fri, 02 Jan 2004 00:27:45 GMT, Nico Coesel <nico@puntnl.niks> wrote:
>> John Bokma <postmaster@castleamber.com> wrote:
>>
>>>Hans wrote:
>>>
>>>> Ik zal wel blond wezen hoor maar waarvoor zijn functies als LCASE en
>>>> LOWER in sql? Als je ieder woord wil vergelijken wordt het een duur grapje.
>>>
>>>Yup, ik snap niet dat mensen dit soort grappen in een programmeertaal
>>>zitten te hacken terwijl een beetje DB dit zelf al doet en vaak veel
>>>sneller...
>>
>> En meestal net niet wat je wilt... Lees de wensen van de OP nog maar
>> eens door. Gaat je niet lukken zonder programmeerwerk.
>
>SELECT foo FROM bar WHERE foo = LOWER(foo)....

Leuk, en nu de gevonden woorden nog markeren zonder de kastte van de
letters aan te passen.

--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl

Erik van der Grinten
03/01/04, 15:45
Anders Floor (andersfloor@hotmail.hotmail) schreef:

> Erik vd Grinten wrote:
>
> >Met de voorgestelde str_ireplace() kan ik helaas niets (zie andere
> >bericht).
>
> Kijk eens bij eregi_replace()
>
> Is relatief een stuk langzamer dan str_replace() maar als je het niet
> intensief gebruikt zul je in de praktijk nauwelijk verschil merken.
>
> Anders
>
Anders, precies wat ik zocht!

Thnx
--
Houdoe, dag en de mazzel
Erik

please reply via newsgroup