Someone gave me the preg_match equivalent preg_match( '/([-_a-z]+)\.([a-z]+)$/i', $row['site'], $match2 );
I tried that and it took care of the problem, as far as I can tell. To me, that narrows it down to a problem (bug?) with ereg... anyone else have any ideas? ---John Holmes... > -----Original Message----- > From: John Holmes [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, April 23, 2002 6:01 PM > To: [EMAIL PROTECTED] > Subject: [PHP] ereg() not matching same text each time script is run... > > Okay...I'm really at a loss for this... > > (PHP 4.0.6 on Redhat Linux) > > I've written a little script that shows the top referrers for > http://www.falkware.com. Problem is...the script is supposed to take > "www.domain.com" and strip out only the "domain" to show. It does this, > but only some of the time. I can't figure out a pattern to it, but > sometimes the ereg will match "domain" and sometimes it won't... ?? The > data is always the same because it's coming from a database. what gives? > > > Here is the code. This is the same exact code that is running on > http://www.falkware.com right now. Referrer script is on left hand side > near the bottom. Refresh the screen and you'll see how it changes > (maybe?). You can see I've added in some HTML comments to echo out what > the "site" from the database is, and what was matched. > > If anyone can help me out, it's greatly appreciated. I must be going > crazy or something.... You can see the same question and code at > http://forums.devshed.com/showthread.php?s=&threadid=34534&forumid=5. > The PHP code has syntax highlighting on it, so it may be easier to read > there. > > The lines in question are: > @eregi("([-_a-z]+)\.([a-z]+)$",$row[site],$match2); > $name = $match2[1]; > How, if $row[site] is the same because it's pulled from a database, can > the ereg match the domain some of the time, and not match it during > other times...? > > > PHP:-------------------------------------------------------------------- > - > > //Display table of referers > $referer_query = "SELECT ID, site, count, > DATE_FORMAT(last_visit,'%c/%e/%y %k:%i') AS last_visit, > count/(TO_DAYS(NOW()) - TO_DAYS(first_visit)) AS visits_per_day FROM > $table ORDER BY count DESC LIMIT " . (int)$num_sites; > $referer_result = DB_query($referer_query); > > $returned_rows = DB_numRows($referer_result); > > if($returned_rows > 0) > { > if($_CST_VERBOSE) { COM_errorLog("**** Displaying top > $returned_rows Sites ****", 1); } > > > $retval .= " > <table border='0' cellspacing='0' cellpadding='0' > align='center' bordercolor='#afae8b' width='98%'> > <tr> > <td align=center><b><font face='verdana' size='1'> <u>#</u> > </font></b></td> > <td align=center><b><font face='verdana' size='1'> > <u>Site</u> </font></b></td> > <td align=center><b><font face='verdana' size='1'> > <u>Hits</u> </font></b></td> > </tr> > "; > > $site_count = 1; > > while($row = DB_fetchArray($referer_result)) > { > if($_CST_VERBOSE) { COM_errorLog("**** Displaying Site > #$site_count, $row[site] ****", 1); } > > unset($match2); > $retval .= "<!-- Row[site] ==> " . $row["site"] . " -->"; > > @eregi("([-_a-z]+)\.([a-z]+)$",$row[site],$match2); > $name = $match2[1]; > $retval .= "<!-- Name matched ==> " . $name . " -->"; > > if(strlen($name) == 0) > { > $name = $row[site]; > } > > $link = "http://" . $row[site] . "/"; > > $retval .= " > <tr> > <td align=center><font face='tahoma' size='1' > color='black'><strong> $site_count </strong></font></td> > <td align=center> > <a href='$link' target='_blank'><font face='verdana' > size='1'><strong> $name </strong></font></a> > </td> > <td align='center'><font face='verdana' > size='1'><strong> $row[count] </strong></font></td> > </tr> > "; > $site_count++; > > if($show_time == 1) > { > $retval .= "<tr><td colspan='3' align='right'><font > face='verdana' size='1' color='#999999'>Last: > $row[last_visit]</td></tr>"; > } > if($show_posts == 1) > { > if($row[visits_per_day] <= 0) > { > $row[visits_per_day] = $row[count]; > } > $retval .= "<tr><td colspan='3' align='right'><font > face='verdana' size='1' color='#999999'>Per Day: > $row[visits_per_day]</td></tr>"; > } > } > $retval .= "</table>"; > } > else > { > $retval .= "No referers yet."; > } > > if($_CST_VERBOSE) { COM_errorLog("**** Leaving phpblock_top_referer > in lib-custom.php ****", 1); } > > return $retval; > > ------------------------------------------------------------------------ > -------- > > When I run the page and look at the source, one time I'll get > > <!-- Row[site] ==> www.luclinks.com --><!-- Name matched ==> --> > > for the comments, and the next time it's run I'll get: > > <!-- Row[site] ==> www.luclinks.com --><!-- Name matched ==> luclinks > --> > > ?? Like I said, I can't find a pattern to it though. I'm going to try > out some other regular expressions...maybe that'll do the trick. > Suggestions are welcome. > > Here is a sample of the table that the data is coming from: > > code:------------------------------------------------------------------- > -- > SELECT * FROM referer ORDER BY count DESC LIMIT 10; > > ID Site Count First_Visit Last_Visit IP > 8 www.rubberanchovies.com 4133 2001-10-01 20020422190944 172.180.87.191 > 10 www.iwantanewgirlfriend.com 3413 2001-06-01 20020420133309 > 204.97.227.50 > 6 www.slapass.net 3068 2001-11-01 20020418170024 63.230.236.97 > 12 www.americanjackass.net 2463 2001-06-01 20020422143828 192.187.17.132 > > 323 www.luclinks.com 2454 2002-01-22 20020329035137 172.141.93.71 > 13 www.validatethis.com 978 2002-01-01 20011229161124 2 > 20 www.geocities.com 734 2002-01-01 20020420013724 63.225.246.25 > 32 www.nethitters.com 634 2002-01-01 20020420110423 12.237.218.113 > 18 www.network-underground.net 626 2002-01-01 20011229161124 2 > 19 omniflare.devfx.org 594 2002-01-01 20011229161124 2 > ------------------------------------------------------------------------ > --- > > > TIA, > > ---John Holmes... > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php