---
title: "markera sökträffar."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/38711-markera-sökträffar"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "visslaren"
published: "2002-02-28T15:08:33.000Z"
updated: "2002-03-02T00:24:23.000Z"
replies: 13
views: 372
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/38711-markera-sökträffar"
---

# markera sökträffar.

## #1 — visslaren, 2002-02-28T15:08Z

har ett problem med regexp. håller på med en sökmotor för en en sidan. när man hittat artikeln och går in på den så ska alla ord som stämmer överens med sökordet färgas röda. blir dock parse error på rad 72 i koden (har markereat den i koden jag postar)
nån som ser felet?

```
function colorit($str, $k=$k){  (<---- rad 72 )
    $str = preg_replace ("$k", "<font color=#c50000>\\0</font>", $str); 
    return $str; 
}
```

Permalänk: https://www.webforum.nu/p/38711

## #2 — SPiN, 2002-02-28T15:32Z

Ja, det är inte konstigt att det blir fel på $k=$k. Antingen måste du ge $k ett defaultvärde, eller så måste användaren skicka med en parameter $k till funktionen.

```php
<?php
function func ( $val1, $val2 = "Heja bajen!" ) {
   echo $val1 . ": " . $val2;
}

func ( "SPiN" ); // Resulterar i: "SPiN: Heja bajen!"
func ( "SPiN", "PHP!" ); // Resulterar i: "SPiN: PHP!"
```

Permalänk: https://www.webforum.nu/p/615347

## #3 — visslaren, 2002-02-28T15:52Z

tack. nu blir det inget scriptfel :)

men den returnerar ingenting :l

har en ifsats som ser ut så här: 

```
function colorit($str, $k){ 
    $str = preg_replace ("$k", "<font color=#c50000>\\0</font>", $str); 
    return $str; 
}

if($k) {
$title=colorit($title, $k);
$content=colorit($content, $k);
$samman=colorit($samman, $k);
}
else {
}
```

om $k finns så ska den köra igenom funktionen.

Permalänk: https://www.webforum.nu/p/615361

## #4 — SPiN, 2002-02-28T16:52Z

Skulle du kunna ge exempel på hur $str och $k skulle kunna se ut?

Permalänk: https://www.webforum.nu/p/615394

## #5 — visslaren, 2002-02-28T16:55Z

$str innehåller det som ska sökas igenom exempelvis denna text: <http://www.spelbasen.net/epicentre_2/recension.php?id=137

$k innehåller sökord som tex mario>

Permalänk: https://www.webforum.nu/p/615396

## #6 — SPiN, 2002-02-28T17:04Z

Då skulle funktionen kunna se ut så här:

```
function colorit ( $str, $k ) { 
    $str = preg_replace ( "/(.*?)(" . $k . ")(.*?)/is", "\\1<font color=#c50000>\\2</font>\\3", $str ); 
    return $str; 
}
```

Kanske.

Men din funktion borde ha fungerat, tycker jag.

Permalänk: https://www.webforum.nu/p/615399

## #7 — visslaren, 2002-02-28T18:07Z

hmm nu skrevs iaf nåt ut. men det blev lite fel: 
<http://www.spelbasen.net/epicentre_2/recension.php?id=137&k=mario>

Permalänk: https://www.webforum.nu/p/615414

## #8 — SPiN, 2002-02-28T18:35Z

Hm, jag redigerade mitt inlägg ovan. När man använde \[php\]-taggen så blev det endast ett \\-tecken framför träffarna, kan ha varit det som ställde till det kanske?!

Permalänk: https://www.webforum.nu/p/615419

## #9 — visslaren, 2002-02-28T20:15Z

tack! nu fungerar det bra :)

Permalänk: https://www.webforum.nu/p/615441

## #10 — streetrobban, 2002-03-01T00:20Z

Tjena, jag har en sökfunktion som jag också vill ha markerade sökträffar på. Men jag förstår inte riktigt hur jag ska göra. Var någonstans (och hur) bestämmer du vad "$str" innehåller?

Min sökfunktion ser ut så här nu:
news.php 
Här finns en input ruta man skriver in sökordet i och skickar det vidare till nästa sidan, med POST.

search-news.php
Den heter search-news.php och där hämtar man relaterade nyheter från databasen med följande kod:

```
$result = mysql_query("SELECT * FROM news WHERE news.id LIKE '%$search' OR news.nDate LIKE '%$search%' OR news.nTime LIKE '%$search%' OR news.nWriter LIKE '%$search%' OR news.nText LIKE '%$search%' OR news.nTopic LIKE '%$search%' ORDER BY news.id DESC", $open) or die (mysql_error());
```

Sedan skriver jag ut det. Men hur får jag sökordet att bli rött, eller **bold** eller vad som helst?

Permalänk: https://www.webforum.nu/p/615522

## #11 — visslaren, 2002-03-01T10:32Z

använd senaste koden som spin skrev. anropa med nåt i stil med detta: $title=colorit($title, $k); i detta faller är $title strängen som ska sökas igenom efter sökordet. sökordet finns i $k. ändra i variabelgrejjor i funktionen så ska det fungera :)

Permalänk: https://www.webforum.nu/p/615645

## #12 — streetrobban, 2002-03-01T15:08Z

Men jag skickar ju aldrig med en sträng (med det som ska genomsökas). Det enda jag skickar med från föregående sida är $search (som är sökordet). Sedan matchar jag det med något från news tabellen. :x

Permalänk: https://www.webforum.nu/p/615773

## #13 — visslaren, 2002-03-01T19:00Z

men på nåt sätt så hämtar du ju från tabellen. det är ju bara att du kör in det som ska genomsökas i en variabel som söks igenom innan det skrivs ut. svårare är det inte =)

Permalänk: https://www.webforum.nu/p/615867

## #14 — streetrobban, 2002-03-02T00:24Z

Det gör jag ju också..

```
<?php
include("includes/db.php");
	
// Print on the page
$result = mysql_query("SELECT * FROM news WHERE news.id LIKE '%$search' OR news.nDate LIKE '%$search%' OR news.nTime LIKE '%$search%' OR news.nWriter LIKE '%$search%' OR news.nText LIKE '%$search%' OR news.nTopic LIKE '%$search%' ORDER BY news.id DESC", $open) or die (mysql_error());
		
function colorit ( $result, $search ) 
{ 
	$result = preg_replace ( "/(.*?)(" . $search . ")(.*?)/is", "\\1<font color=#c50000>\\2</font>\\3", $result ); 
	return $result; 
}
		
$rowCount = mysql_numrows($result);
	
if ($rowCount == 0) 
{
	echo("Nothing matched your search.");
	echo("<br><br>");
} 
else 
{
	echo("You searched for <b>$search</b>, and this is your result:<br><br>");
		
	while ($get = mysql_fetch_array($result))
	{
		echo("<table border=0 width=100% cellspacing=0 cellpadding=0>");
		echo("<tr>");
		echo("<td bgcolor=#EDDDC3>");
		echo("<span class=topic><b><a name=".$get['id'].">".$get['nTopic']."</a></b></span>&nbsp;<a href=#top><img src=gfx/up.gif border=0></a>");
		echo("</td>");
		echo("</tr>");
		echo("<tr>");
		echo("<td bgcolor=#F6EEE3>");
		echo("<p align=right><span class=datte>".$get['nWriter']."&nbsp;".$get['nDate']." | ".$get['nTime']."</span></p>");
		echo("</td>");
		echo("</tr>");
		echo("<tr>");
		echo("<td>");
		echo("".$get['nText']."");
		echo("</td>");
		echo("</tr>");
		echo("</table>");
		echo("<br><br>");
	}
}

// Close DB connection
mysql_close($open);
?>
```

Permalänk: https://www.webforum.nu/p/615952

---

Tråden på webben: https://www.webforum.nu/amne/php/38711-markera-sökträffar
