---
title: "Sök efter ett ord i en text"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/102569-sök-efter-ett-ord-i-en-text"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "filipbh"
published: "2004-04-28T12:59:55.000Z"
updated: "2004-05-06T14:30:14.000Z"
replies: 19
views: 908
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/102569-sök-efter-ett-ord-i-en-text"
---

# Sök efter ett ord i en text

## #1 — filipbh, 2004-04-28T12:59Z

Om jag skriver in en text i ett formulär och klickar på exempelvis "skicka" så vill jag att det ska sökas efter ett speciellt ord eller några olika ord. Om de orden finns med ska en uppgift köras..

Någon som hänger med? :p

Ex.
fil1.php innehåller ett formulär
När man klickar på "Skicka" så går det till fil2.php

fil2.php kollar igenom texten man skrev i formuläret i fil1.php och letar efter t.ex. "hora". Finns ordet hora med ska det skapas en fil i en annan tabell som visar att det kommit ett inlägg med ett "fult" ord.

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

## #2 — Qimen, 2004-04-28T13:04Z

```php
$ord = "Innehåller den här strängen svärord?";
$var = strrchr($ord, "svärord");

if(!$var == FALSE) {
   print("Ja, den innehåller svärordet: " . $var . "<p/>");
} else {
   print("Inga svärord i den här strängen");
}
```

Läs mer om strrchr här <http://se.php.net/strrchr>

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

## #3 — filipbh, 2004-04-28T13:13Z

Tack... Hur gör man om det är flera ord som ska kollas igenom då?

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

## #4 — Nexus86, 2004-04-28T23:23Z

```php
$svordommar = Array("svordom", "svärord");
$ord = "Innehåller den här strängen svärord?";

foreach ($svordommar as $val) {
    $var = strrchr($ord, $val);
    if (!$var == FALSE) {
        print("Ja, den innehåller svordommen: " . $val . "(" . $var . ")");
        break;
    }
}

if ($var == FALSE) {
    print("Inga svordommar i den här strängen");
}
```

Kanske? Var länge sen man höll på med php. :)

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

## #5 — filipbh, 2004-04-29T10:08Z

Testade nu men det ville inte fungera.. Gjorde man om $ord till en annan text visade den ändå fel och skrev något ord eller bokstav. Tycker det ser okej ut men något måste vara fel...

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

## #6 — filipbh, 2004-04-29T10:33Z

Eller måste man rensa Arrayen? För det står att "svordom" finns med igen. Men det finns ju inte efter jag tog bort det. 

Hur rensar man den isåfall?

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

## #7 — lunne82, 2004-04-29T10:56Z

Gör såhär:

```php
$svordommar = Array("svordom", "svärord");
$ord = "Innehåller den här strängen svärord?";

foreach ($svordommar as $val) {

    if (strpos($ord, $val) !== FALSE) {
        $var = TRUE;
        echo "Ja, den innehåller svordommen: " . $val;
    }
}

if ($var === FALSE) {
    print("Inga svordommar i den här strängen");
}
```

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

## #8 — filipbh, 2004-04-29T13:01Z

"Inga svordommar i den här strängen" kom inte upp när det inte fanns några.. Annars fungerade det bra. Det behövs inte komma upp heller direkt för det ska bara hända en sak OM det finns med... Så tack för hjälpen

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

## #9 — lunne82, 2004-04-29T16:33Z

Jaså? Jag testade den på strängen "Mors lilla olle" och då fick jag "Inga svordommar i den här strängen". Men om det funkar i övrigt så...

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

## #10 — filipbh, 2004-04-29T17:30Z

Skumt att det inte fungerade för mig då...

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

## #11 — filipbh, 2004-05-06T12:57Z

Så här ser det nu... Men det skrivs ändå ut att ordet finns med.

```php
$bot_check = $_POST['inlagg'];

$bot_check = strtoupper($bot_check);

$var = strrchr($bot_check, "ORDET");

if(!$var == FALSE) {

srand((double)microtime()*1000000);
$rand_tal = rand(1,25) - 1;

require("fil.php");
```

Om vi använder "ORDET" och har texten "Ortodoxa kyrkor" så säger den att "ORDET" finns med för att "Or" i "Ortodoxa" finns. Den ska ju bara skriva ut om HELA ordet finns med. Inte bara delar av ordet. 

Den skriver dock ut OM det finns med.. Vilket den ska göra.

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

## #12 — Skarre, 2004-05-06T13:32Z

Jag skrev en liten funktion som du kanske kan använda/utveckla:

```php
function contains_bad_words($s) {

	$a_bad_words = array('foo', 'bar');

	foreach ($a_bad_words as $word) {
		if (preg_match('/\\b'.$word.'\\b/i',$s)) return true;
	}
	return false;
}

$approved = contains_bad_words('Detta är en teststräng som innehåller foo');
```

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

## #13 — Skarre, 2004-05-06T13:36Z

Avvakta lite, jag tror inte den fungerar riktigt. :r

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

## #14 — filipbh, 2004-05-06T13:38Z

Okej, avvaktar... :p

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

## #15 — Skarre, 2004-05-06T13:43Z

Ok, det var forumet som av någon anledning strippade bort backslashar från inlägget så "mönstret" blev fel. Jag bifogar koden i en textfil.

RED: Koden i mitt förra inlägg är nu också fixad.

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

## #16 — filipbh, 2004-05-06T13:51Z

Vad påverkar $s? Visst kan man väl skriva onLoad="function contains_bad_words();" i body-taggen för att den ska ladda? Den ligger nämligen inte på samma sida som där man skriver själva texten... Och hur ska man klämma in i koden att den ska utföra en grej om orden finns med?

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

## #17 — Skarre, 2004-05-06T13:59Z

$s innehåller strängen du skickar till funktionen. Och, nej, du kan inte manipulera PHP med klientskript (som t.e.x JavaScript).

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

## #18 — filipbh, 2004-05-06T14:10Z

Hur ska jag anropa den då?

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

## #19 — Skarre, 2004-05-06T14:22Z

Om man tar den kod du postade ovan så blir det väl någonting sådant här:

```php
function contains_bad_words($s) {

    $a_bad_words = array('foo', 'bar');

    foreach ($a_bad_words as $word) {
        if (preg_match('/\\b'.$word.'\\b/i',$s)) return true;
    }
    return false;
}

$bot_check = $_POST['inlagg'];

if (!contains_bad_words($bot_check)) {
	srand((double)microtime()*1000000);
	$rand_tal = rand(1,25) - 1;
	require("fil.php");
```

Nu finns inget avslut på den sista if-satsen, men jag antar att det var medvetet?

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

## #20 — filipbh, 2004-05-06T14:30Z

Ja, det är lite mer därtill men det var inte nödvändigt att med för denna kodsnutt. Men hur fungerar det när $bot_check = $\_POST\['inlagg'\] kommer så pass långt ner.. $\_POST\['inlagg'\] är väl $s?

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

---

Tråden på webben: https://www.webforum.nu/amne/php/102569-sök-efter-ett-ord-i-en-text
