32 Stimmen

REGEX: Erfasst alles bis zu einem bestimmten Wort

Ex: <a><strike>example data in here</strike></a>

Ich möchte alles innerhalb des a-Tags, bis zum Ende

/<a>([^<]*)<\/a>/

Es funktioniert, wenn es keine zusätzlichen Tags innerhalb der <a> Tag, aber was, wenn es welche gibt?

Ich möchte wissen, ob man ihm sagen kann, dass er alles bis zu [^</a>] anstelle von [^<] nur.

Das tun mit /<a>(.*)<\/a>/ funktioniert nicht gut. Manchmal bekomme ich alles im <a> Tag und ein anderes Mal bekomme ich eine Menge Zeilen, die in diesem Anruf enthalten sind.

79voto

Kibbee Punkte 64039
/<a>(.*?)<\/a>/

sollte funktionieren. Das ? macht es faul, so dass es so wenig wie möglich abgreift, bevor es die </a> Teil. Aber die Verwendung von . bedeutet, dass es alles abgleicht, bis es den </a> . Wenn Sie einen zeilenübergreifenden Abgleich wünschen, können Sie folgendes if mit preg_match

/<a>(.*?)<\/a>/s

Das "s" am Ende versetzt den regulären Ausdruck in den "Einzeilenmodus", d. h. das Zeichen . passt auf alle Zeichen, auch auf Zeilenumbrüche. Siehe andere nützliche Modifikatoren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X