phpbar.de logo

Mailinglisten-Archive

[php] preg_match Gross/Kleinschreibung ignorieren.

[php] preg_match Gross/Kleinschreibung ignorieren.

Aron Schlesinger aron at viplocations.de
Die Apr 12 20:20:10 CEST 2005


Hallo Frank,

> Hallo
>
> Ich stehe leider mal wieder auf dem Schlauch.
>
> Mit :
>
> $text = "<table border='0'>";
> preg_match("/(<html> | <table | <font | <style)/i", $text)
>
> möchte ich gerne einen Text daraufhin prüfen ob es sich um HTML oder um
> reinen Text handelt.

Warum die Leerzeichen?

http://de3.php.net/manual/de/function.preg-quote.php

dort steht unteranderem:
Spezielle Zeichen regulärer Ausdrücke sind: . \\ + * ? [ ^ ] $ ( ) { } 
= ! < > | :

Also sollte entweder die einzelnen "html" Stringteile mit preg-quote()
maskiert werden oder eben mit Hand:

preg_match("/(\<html\>|\<table|\<font|\<style)/i", $text)

> In diesem Fall ist das Ergebnis WAHR.
> Nur wenn <table z.B. in Grossbuchstaben geschrieben wurde, dann leider 
> nicht
> mehr.
> Laut Manual bewirkt /i am Ende, dass zwischen GuK-Schreibung nicht
> unterschieden wird.
>
> Wenn das Manual recht hat, wovon ich eigentlich ausgehe, frage ich 
> mich was
> ich denn da falsch mache?

Die Manual hat in dem Fall natürlich auch mal wieder Recht ;)

Aber prinzipiell würde ich das ganze hinterfragen ob das so sinnvoll ist
was Du da machst. Es gibt ja noch jede menge andre HTML Tags.
Ich persönlich würde das schon ein bisschen globaler fassen.

preg_match("/\<[a-z]+(.*?)\>/i, $text)

irgend wie so in die Richtung. Oder einfach den HTML Code umwandeln so 
das
er vom Browser angezeigt wird und nicht mehr interpretiert wird.

http://de3.php.net/manual/de/function.htmlentities.php

Gruß
   Aron


php::bar PHP Wiki   -   Listenarchive