webForumDet fria alternativet

Regexp + NONcasesensitive

4 svar · 164 visningar · startad av Bäckman

BäckmanMedlem sedan nov. 2001339 inlägg
#1

Hejsan!

Håller på med en _väldigt_ simpel sökfunktion och jag vill att när man söker med den så ska det inte vara så att det blir s.k "case sensitive". Om man söker efter "Gitarr" så ska den hitta (och färglägga) både "Gitarr" och "gitarr" osv.

Räcker det för er att bolla med detta?

$article = ereg_replace("$sokord", "<font color='#0099FF'><b>$sokord</b></font>", "".$array["N_article"]."");

Om ni har andra förslag på hur jag ska göra så får ni gärna dra till med det också. :)

MatteMedlem sedan aug. 20002 970 inlägg
#2

Nu är jag kass på regexp men eregi_replace() ska vara case insensitive.

BäckmanMedlem sedan nov. 2001339 inlägg
#3

Nu är jag jobbig...

Verkar inte funka, men det kanske är fel på resten av koden eller så.

$sql = "SELECT N_article, N_date, N_email, N_headline, N_id, N_writer from news";
$result = mysql_query($sql, $link);
	
$sokord = $_GET["searchword"]; //Kommer från formuläret

//Kollar så att det finns nyheter att söka efter
if (mysql_num_rows($result) > 0) { //Kollar om det finns poster i databasen

$traffar = 0; 

while($array = mysql_fetch_array($result))
{	
	if (preg_match("/$sokord/", "".$array["N_article"]."") or preg_match("/$sokord/", "".$array["N_headline"]."")) 
	{
		$headline = eregi_replace("$sokord", "<font color='#0099FF'><b>$sokord</b></font>", "".$array["N_headline"]."");
		$article = eregi_replace("$sokord", "<font color='#0099FF'><b>$sokord</b></font>", "".$array["N_article"]."");		

		$traffar = $traffar + 1; //Lägger på en för varje träff
	

			echo "<table width='100%' cellpadding='1' cellspacing='0' border='0'>";
				echo "<td bgcolor='#000000'>";
					echo "<table width='100%' bgcolor='#000000' cellpadding='2' cellspacing='0'>";
							echo "<td class='newscell1' height='20'>$headline</td>";
							echo "<tr align='left' valign='top'>";
							echo "<td class='newscell2' height='10'>".$array["N_date"]." by <a class='news' 							href='mailto:".$array["N_email"]."'>".$array["N_writer"]."</a></td>";
							echo "<tr align='left' valign='top'>";
							echo "<td class='newscell3'>$article";
							echo "</td>";
					echo "</table>";
				echo "</td>";
			echo "</table>";

			echo "<table><td></td></table>";	
	}	
}

Några idéer på förbättringar?

MatteMedlem sedan aug. 20002 970 inlägg
#4

Nu är jag fortfarande lika cass på regexp, men jag tror inte din preg_match är case insensitive. Efter en snabb koll i manualen står där att efter avslutande / så ska man ha ett i för att göra det case insensitive. I såfall borde det se ut så här:

if (preg_match("/$sokord/i", "".$array["N_article"]."") or preg_match("/$sokord/i", "".$array["N_headline"].""))

Vet inte om detta hjälper men det kan vara värt att försöka.

BäckmanMedlem sedan nov. 2001339 inlägg
#5

Det hjälpte. :)

Trodde att jag allaredan hade provat det där, men jag hade visst fel. Nu fungerar allt som jag vill tack vare din hjälp. Tack. :]

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb