Likes Likes:  0
Resultaten 1 tot 2 van de 2
Geen
  1. #1
    PanMan
    PHP: Case insensitive Strpos?
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    PHP: Case insensitive Strpos?

    Hoi!
    Ik probeer voor een search woorden te highlighten die gevonden zijn.
    Daarvoor doe ik eerst een LIKE query in MySQL, en vervolgens wil ik de
    gevonden keywords tonen in een fragmentje.
    Daarvoor moet ik de positie van het woord bepalen. Probleem is echter
    dat MySQL bij LIKE case insensitive werkt, en PHP bij strpos niet.
    Nu los ik dit momenteel zo op:
    $woordpos=strpos(strtolower($txt),strtolower($term ));
    maar ik vroeg me af of er een betere oplossing is?

    Ook heb ik nog een beetje het probleem, dat hij nu ook naar woorden in
    de HTML tags zoekt (in de DB staat HTML). Dus, als ik nu naar Email
    zoek, vind hij ook documenten waar email een form veld is. Terwijl die
    vervolgens eruit gefilterd worden...

    De hele code is dit: (zonder het SQL deel)

    if (mysql_numrows($result)>0) {
    while($RS=mysql_fetch_array($result)) {
    $txt=strip_tags($RS['titel']). " ".strip_tags($RS['text']);
    echo "<BR><B>",$i++,"</B> <A
    HREF=\"./?id=$RS[id]\">$RS[titel]</A><BR>";
    foreach ($terms as $term) {
    //positie bepalen:
    $woordpos=strpos(strtolower($txt),strtolower($term ));
    if ($woordpos !=0) {
    $startpos=$woordpos - $voorletters;
    //niet voor 0 beginnen, want dan pakt hij van het eind
    if ($startpos<0) {$startpos=0;}
    $length=$voorletters+strlen($term)+ $naletters;
    $txtpart=substr($txt,$startpos,$length);
    //woord bold maken:
    $txtpart=preg_replace ( "_($term)_i",
    "<b>\\1</b>",$txtpart);
    $txtpart="...".$txtpart."...";
    echo $txtpart, "<BR>";
    } else {
    echo "<b>$term</b> is niet gevonden in deze
    pagina.<BR>";
    }
    }
    }
    } else { echo "Helaas, niets gevonden";}

    Thnx,
    PanMan.

    --
    Have you ever had a dream, that you were so sure it was real?
    What if you were unable to wake from that dream?
    How would you know the difference between the dream world,
    and the real world? - The Matrix.

  2. #2
    Daniel Tryba
    PHP: Case insensitive Strpos?
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: PHP: Case insensitive Strpos?

    PanMan <use.the@reply.to.adress> wrote:
    > Ook heb ik nog een beetje het probleem, dat hij nu ook naar woorden in
    > de HTML tags zoekt (in de DB staat HTML). Dus, als ik nu naar Email
    > zoek, vind hij ook documenten waar email een form veld is. Terwijl die
    > vervolgens eruit gefilterd worden...


    split de strings op > en zoek dan in het array van strings tot de
    eerste <. Dat lijkt me afdoende.

    > $woordpos=strpos(strtolower($txt),strtolower($term ));
    > if ($woordpos !=0) {


    Barf: strpos('foobar','foo') geeft als return waarde 0

    Daarom staat ook in de strpos manual:
    Warning

    This function may return Boolean FALSE, but may also return a
    non-Boolean value which evaluates to FALSE, such as 0 or "". Please read
    the section on Booleans for more information. Use the === operator for
    testing the return value of this function.

    --

    Daniel Tryba


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics