function problems

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • azriley@gmail.com

    function problems

    could use some help with a function to clean up keywords in a url. I'm
    expecting $keywords to equal 'coretta scott king' - the plus signs are
    stripped out for search engine referrals. What am I doing wrong?


    <?php

    $referer = 'http://www.google.com/search?hl=en&q= coretta+scott+k ing';

    function parse_keywords( $referer){
    // Google, AllTheWeb, MSN, Freeserve, Altavista
    if ((eregi("www.go ogle",$referer) ) or
    (eregi("www.all theweb",$refere r)) or (eregi("search. msn",$referer) ) or
    (eregi("ifind.f reeserve",$refe rer)) or
    (eregi("altavis ta.com",$refere r))) {
    preg_match("'q= (.*?)(&| )'si", " $url ", $keywords);
    }
    // HotBot, Lycos, Netscape, AOL
    if ((eregi("www.ho tbot",$referer) ) or (eregi("search. lycos",$referer ))
    or (eregi("search. netscape",$refe rer)) or
    (eregi("aolsear ch.aol",$refere r))) {
    preg_match("'qu ery=(.*?)(&| )'si", " $url ", $keywords);
    }
    // Yahoo
    if ((eregi("yahoo. com",$referer) ) or (eregi("search. yahoo",$referer )))
    {
    preg_match("'p= (.*?)(&| )'si", " $url ", $keywords);
    }
    // Looksmart
    if (eregi("looksma rt.com",$refere r)) {
    preg_match("'ke y=(.*?)(&| )'si", " $url ", $keywords);
    }
    // DMOZ
    if (eregi("search. dmoz",$referer) ) {
    preg_match("'se arch=(.*?)(&| )'si", " $url ", $keywords);
    }
    // Ask
    if (eregi("ask.co" ,$referer)) {
    preg_match("'as k=(.*?)(&| )'si", " $url ", $keywords);
    }

    if (($keywords[1]!="") and ($keywords[1]!=" ")) {
    $keywords=str_r eplace("+"," ",$keywords[1]);
    }
    return $keywords;
    }
    $keywords = parse_keywords( $referer);
    echo $keywords;


    ?>

  • Steve

    #2
    Re: function problems

    [color=blue]
    > could use some help with a function to clean up keywords in a url. I'm
    > expecting $keywords to equal 'coretta scott king' - the plus signs are
    > stripped out for search engine referrals. What am I doing wrong?[/color]
    [color=blue]
    > <?php
    >
    > $referer = 'http://www.google.com/search?hl=en&q= coretta+scott+k ing';
    >
    > function parse_keywords( $referer){
    > // Google, AllTheWeb, MSN, Freeserve, Altavista
    > if ((eregi("www.go ogle",$referer) ) or
    > (eregi("www.all theweb",$refere r)) or (eregi("search. msn",$referer) ) or
    > (eregi("ifind.f reeserve",$refe rer)) or
    > (eregi("altavis ta.com",$refere r))) {
    > preg_match("'q= (.*?)(&| )'si", " $url ", $keywords);
    > }[/color]

    .... more code snipped...
    [color=blue]
    > return $keywords;
    > }
    > $keywords = parse_keywords( $referer);
    > echo $keywords;[/color]

    Question 1: what do you think the variable $url contains?
    Question 2: why have you got error reporting turned off, which would
    answer question 1?

    ---
    Steve

    Comment

    • ZeldorBlat

      #3
      Re: function problems


      azriley@gmail.c om wrote:[color=blue]
      > could use some help with a function to clean up keywords in a url. I'm
      > expecting $keywords to equal 'coretta scott king' - the plus signs are
      > stripped out for search engine referrals. What am I doing wrong?
      >
      >
      > <?php
      >
      > $referer = 'http://www.google.com/search?hl=en&q= coretta+scott+k ing';
      >
      > function parse_keywords( $referer){
      > // Google, AllTheWeb, MSN, Freeserve, Altavista
      > if ((eregi("www.go ogle",$referer) ) or
      > (eregi("www.all theweb",$refere r)) or (eregi("search. msn",$referer) ) or
      > (eregi("ifind.f reeserve",$refe rer)) or
      > (eregi("altavis ta.com",$refere r))) {
      > preg_match("'q= (.*?)(&| )'si", " $url ", $keywords);
      > }
      > // HotBot, Lycos, Netscape, AOL
      > if ((eregi("www.ho tbot",$referer) ) or (eregi("search. lycos",$referer ))
      > or (eregi("search. netscape",$refe rer)) or
      > (eregi("aolsear ch.aol",$refere r))) {
      > preg_match("'qu ery=(.*?)(&| )'si", " $url ", $keywords);
      > }
      > // Yahoo
      > if ((eregi("yahoo. com",$referer) ) or (eregi("search. yahoo",$referer )))
      > {
      > preg_match("'p= (.*?)(&| )'si", " $url ", $keywords);
      > }
      > // Looksmart
      > if (eregi("looksma rt.com",$refere r)) {
      > preg_match("'ke y=(.*?)(&| )'si", " $url ", $keywords);
      > }
      > // DMOZ
      > if (eregi("search. dmoz",$referer) ) {
      > preg_match("'se arch=(.*?)(&| )'si", " $url ", $keywords);
      > }
      > // Ask
      > if (eregi("ask.co" ,$referer)) {
      > preg_match("'as k=(.*?)(&| )'si", " $url ", $keywords);
      > }
      >
      > if (($keywords[1]!="") and ($keywords[1]!=" ")) {
      > $keywords=str_r eplace("+"," ",$keywords[1]);
      > }
      > return $keywords;
      > }
      > $keywords = parse_keywords( $referer);
      > echo $keywords;
      >
      >
      > ?>[/color]

      Inside your function your use $url, which is undefined. Are you sure
      you didn't mean to use $referer instead? Also, for performance, I'd
      recommend changing some of your if((eregi... statements to else if(...
      Once one of them evaluates to true he won't evaluate the others (which,
      when using preg_*, can be expensive).

      Comment

      Working...