2016-05-23 14 views
1

Ich versuche, einen Code zu erstellen, der es mir erlaubt, HTML-Tags, aber ohne Attribute zu verwenden.Regex, die preg_match ist Übereinstimmungen, egal welche Zeichenfolge ich schreibe

dies ist mein Code:

$dom->loadHTML("<p>a</p>"); 
$post = $dom->saveHTML(); 
if (!preg_match("/<.+\s[^A-Za-z0-9]?>/", $post)) { 
    echo "matches"; 
} 

ich aus irgendeinem Grund die „Matches“ -Meldung bin immer, auch wenn der Tag aus Attribute leer.

+2

was meinst du mit *** Einstellungen ***? meinst du Attribute? Wenn Sie 'saveHTML()' html verwenden, sind auch Header- und Body-Tags enthalten. –

+0

Attribute, mein schlechtes. Wenn ich die Daten von $ post alarmiere, bekomme ich die

a

. @PedroLobito –

+1

Warum willst du nicht HTML-Parser verwenden? – splash58

Antwort

0

Das Muster stimmt nicht mit der HTML-Zeichenfolge in Ihrer Frage überein, da das Muster erfordert, dass die Zeichen nach einem Kleiner-als-Zeichen einem Leerzeichen folgen. In den HTML-Tags in der Zeichenfolge sind keine Leerzeichen enthalten. Daher stimmt die Übereinstimmung nicht überein, sodass "Übereinstimmungen" zurückgegeben werden, wenn Sie das Ergebnis der Funktion preg_match negieren.

Wenn Ihre HTML-Zeichenfolge <p >a</p> oder <p>a</p > ist, würde es übereinstimmen (<p > und die gesamte Zeichenfolge bzw.). Hoffentlich weist diese Antwort Sie in die richtige Richtung.

Verwandte Themen