---
title: "preg_match i stället för eregi"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/182648-preg-match-i-stället-för-eregi"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Mr T"
published: "2010-03-03T09:41:01.000Z"
updated: "2012-05-14T09:25:12.000Z"
replies: 7
views: 1135
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/182648-preg-match-i-stället-för-eregi"
---

# preg_match i stället för eregi

## #1 — Mr T, 2010-03-03T09:41Z

Upptäckte att **eregi** komandot ska bort, så då är det väll dax att lära sig något nytt. Kommandot **preg_match** verkar vara ett alternativ som skulle funka i mitt fall.

 Vill se om en text som användaren skriver in innehåller \< eller \>

Har kommit så här långt, men hur fortsätter man ? 

```php
if (preg_match('/^</',$text)) {
```

*(Finns det någon "for dummies" förklaring på hur man bygger upp "pattern" strängen i preg kommandona ?)*

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

## #2 — metalboy, 2010-03-03T10:00Z

Så här kanske

```php
if (preg_match('/<|>/', $text)) {
```

eller

```php
if (preg_match('/[<>]/', $text)) {
```

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

## #3 — Mr T, 2010-03-03T12:11Z

Insåg att jag inte specifiserade om båda eller bara den ena krävdes, men naturligtvis räcker det med att ett av tecknen finns.

 Om man nu skulle vilja ha så att båda krävs, hur skriver man då ?

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

## #4 — nitro2k01, 2010-03-03T12:32Z

I sin enklaste form:

```php
 if (preg_match('/<.*>/', $text)) {
```

...kräver att strängen ska innehålla följande, varsomhelst i strängen: \< följt av 0, 1 eller flera valfria tecken, följt av \>. Vill du matcha början eller slutet av en sträng kan du använda ^ och $

```php
 if (preg_match('/^<.*>$/', $text)) {
```

...kräver att strängen börjar med \< följt av 0, 1 eller flera valfria tecken, följt av \> och där måste strängen sluta. 
Du kan även göra:

```php
 if (preg_match('/^<[^<>]+>$/', $text)) {
```

...Som kräver att strängen börjar med \< följt ett eller flera (Notera + istället för \*) tecken som får vara vadsomhelst utom \< eller \> ( \[^\<\>\] ) följt av \> följt av slut.

Sedan finns det regexar för att komplett matcha HTML-taggar, som säkert går att hita om du använder wF's sökfunktion.

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

## #5 — Mr T, 2010-03-03T22:26Z

Fick det inte att funka helt med nitro2k01;s lösning. Kan bero på att jag bara testade rakt av med ENBART \< och/eller \>
 Lösning blev denna 

```php
if (preg_match('/</',$story) OR preg_match('/>/',$story)) {
```

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

## #6 — nitro2k01, 2010-03-03T22:38Z

Mr T, det du gör nu är likvärdigt med metalboys förslag.

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

## #7 — Mr T, 2010-03-04T08:04Z

okej!

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

## #8 — Mr T, 2012-05-14T09:25Z

Ni hade sådan enorm koll förra gången så nu vänder jag mig åter till er.

 Efter att använt *preg_match('/\<\|\>/', $text)* med toppen resultat. Har sluppit få in länkar i mina texter från användare. Tyvärr har jag nu börjat få in spamm förslag, bara http:// adresserna, inte länkade.

tror mig kunna lösa detta genom att utöka "otilåtena tecken" med *preg_match('/\<\|\>\|http/', $text)* vilket verkar funka rent tekniskt och bör hjälpa en stund mot spamm. Men har ni andra förslag på hur man blir av med spamm inlägg ?

fortsatta förbättrade förslag på otillåtna tecken borde väll vara
http://
ftp://

Tacksam för fler förslag, och hur jag lägger in dom i preg_match.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/182648-preg-match-i-stället-för-eregi
