Jump to content

Values Without Single Quotes Not Being Picked Up Or Passed With eregi_replace


Recommended Posts

If I uncomment the code below starting with //$term[0] and run the code, everything works as it should. All the words in the $term array are highlighted as they should be.

 

However, if i run the code as it is shown here and pick up the $Topic values from the database, no highlighting takes place and I get a Resource id #2 in the Topic field even though the $Topic variable passed to this code is appropriate. Now, the value of $Topic as printed out on the screen is for example, Armies and not 'Armies'. If the missing single quote is the reason I am getting an error, how do I an a single quote to either side of the $Topic variable?

 

 

//$term[0] = 'John Doe';
//$term[1] = 'Jane Smith';
//$term[2] = 'Bill Bobbins';
//$term[3] = 'most';
//$term[4] = 'points';
//$term[5] = 'game';
//$term[6] = 'users';
//$Topic = "<p>The users with the most points in this game were John Doe, Jane Smith, and Bill Bobbins.</p>";


echo "Topic   ==  ",$Topic;

$string = $Topic;
$term = array($term[0], $term[1],$term[2],$term[3],$term[4],$term[5],$term[6],);
$bgcolor = "yellow";
foreach($term as $value) {
$count++;
if(!empty($value)) {
	$replaceWith = "<span style=\"background-color:$bgcolor;\">" . $value . "</span>";
	if($count==1) {
		$result = eregi_replace($value, $replaceWith, $string);
	} else {
		$result = eregi_replace($value, $replaceWith, $result);
	}
}
}

//echo $result;

$Topic = $result;

Your not posting enough code, show us where $Topic is being assigned. Essentially what is happening is $Topic is a MySQL resource where as you think it is data retrieved. The Resource id #2, means it references a query that was ran, and if you throw that resource into mysql_fetch_array you will be able to pull out data from the data base that was assigned to that resource id.

 

Either way $term is not assigned anything once you comment it out. You do not anyway shape or form try to convert $Topic into an array to use.

 

Too many mistakes for this to even want to think about working without the $term array.

Thank you for the replies.

 

The input comes into script and is exploded below

 

if ($trimmed == "" | !isset($var))
  {
  echo "<h" . $hlevel . ">Error! No valid search term was entered.</h" . $hlevel . ">";
  $skip = TRUE;
  }
if (ereg(" AND | and | And | aND | AnD | anD ",$trimmed,$matches)) {
$burst = $matches[0];
$terms = explode($burst,$trimmed);
$boolean = TRUE;
$split = "AND"; 
} elseif (ereg(" OR | or | Or | oR ",$trimmed, $matches)) {
$burst = $matches[0];
$terms = explode($burst,$trimmed);
$boolean = TRUE;
$split = "OR"; 
} 

 

$query and $query2 are identical. $query2 is used to develop content for printing to the screen.

 

if (($boolean == TRUE) && ($split == "OR")) {
$query2 = "SELECT * FROM `View2_ConcordFT` WHERE MATCH(`Topic`, `Subtopic`, `Theswords`) AGAINST ('$terms[0] $terms[1] $terms[2] $terms[3] $terms[4] $terms[5]' IN BOOLEAN MODE) ORDER BY `Lnum` ASC LIMIT $startrecord, $display";
} 
elseif (($boolean == TRUE) && ($split == "AND")) 
{ 
// Boolean AND query - searches for $terms[0] and $terms[1] where both 
$query2 = "SELECT * FROM `View2_ConcordFT` WHERE MATCH(`Topic`, `Subtopic`, `Theswords`) AGAINST ('+$terms[0] +$terms[1] +$terms[2] +$terms[3] +$terms[4] +$terms[5]' IN BOOLEAN MODE) ORDER BY `Lnum` ASC LIMIT $startrecord, $display"; 
}
else
{ 
$query2 = "select * from `View2_Concord` where " . presentedCode($SeeAlso,$searchtype) . " AND `Source` IN ($NV, $TR, $BT) ORDER BY `Lnum` ASC  LIMIT $startrecord, $display";
}

 

 

Retrieve the data from the database using while(list and fill the $variables with the data from the database.

 

    $Source="Source";
    $Topic="Topic";
    $Subtopic="Subtopic";
    $References="References";
    while(list($Source, $Topic,$Subtopic,$References)= mysql_fetch_row($result2)) 
{
    if ($colorcounter == 0) {
    $colorbg = "#d8e0f0";    
    }
    else {
    $colorbg = "#e6eaf4";
    $colorcounter = $colorcounter - 2;
    }

 

The variable $Topic has a value just prior to being made equal to the $string variable.

In this line, $Topic has a value because $Topic picks up a value from the database and prints the value to the screen.

 

echo "Topic   ==  ",$Topic;

 

These lines...were included in the first post to show you what works. You should not imply that these variables pick up their value from statements like the one below. The $term variables in the actual working code pick up their values from the explode sequence posted above.

 

//$term[0] = 'John Doe';
//$term[1] = 'Jane Smith';
//$term[2] = 'Bill Bobbins';
//$term[3] = 'most';
//$term[4] = 'points';
//$term[5] = 'game';
//$term[6] = 'users';
//$Topic = "<p>The users with the most points in this game were John Doe, Jane Smith, and Bill Bobbins.</p>";

 

Thank you for the comments.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.