2014-02-07 13 views
5

Was bedeutet das Zeichen „~“ in der folgenden ?:Was bedeutet das Zeichen "~" in PHP regex?

preg_match_all("~<img [^>]+>~", $inputw, $output); 

Meine Vermutung ist, dass sie Anfang und Ende-Marker wie^und $.

+0

'Meine Vermutung ist, dass sie Anfang und Ende Marker wie^und $ sind. Scheint wie Sie Ihre eigene Frage beantwortet. –

+4

@ShankarDamodaran, außer dass das nicht der Fall ist - sie haben nichts mit '^' und '$' zu tun ... – OGHaza

Antwort

8

Es ist ein delimiter

Ein Begrenzungszeichen kann jedes nicht-alphanumerisch sein, nicht-umgekehrten Schrägstrich, Nicht-Leerzeichen.

4

Wie Nambi sagte, Sie sind frei, das Trennzeichen in einer Regex zu wählen. Wenn das Trennzeichen jedoch im Muster angezeigt wird, muss es maskiert werden. Mit diesem Wissen, stellen Sie sich die folgende Situation

'/\/var\/www\/test/' # delimited with/
'~/var/www/test~' # delimited with ~ 

Der letzte zu entkommen nicht die / erfordert als das Trennzeichen ~ ist jetzt. Viel sauberer, nicht wahr?

Als allgemeine Richtlinie werden Sie ermutigt, ein Trennzeichen zu wählen, das nicht Muster des Musters selbst ist, ich denke, ~ ist weit verbreitet als Alternative zu /, da es selten in realen Muster erscheint.

+0

@ Nambinarayanan Link sagt dazu: Wenn das Trennzeichen oft innerhalb des Musters erscheint, ist es ein gutes Idee, ein anderes Trennzeichen zu wählen, um die Lesbarkeit zu erhöhen. ;) – loveNoHate

+0

@dollarvar Sie wissen, was sie über Links sagen – OGHaza

+0

@OGHaza nein ..... – loveNoHate

0

Das schmutzige kleine Geheimnis Begrenzer sie nicht sagen ->
http://uk.php.net/manual/en/regexp.reference.delimiters.php

Beispiele:

Gepaart Trennzeichen (raw: \d{2}Some\{33\}\w{5})

{\d{2}Some\\{33\\}\w{5}} parst zu \d{2}Some\\{33\\}\w{5} und
{\d{2}Some\{33\}\w{5}} parst zu \d{2}Some{33}\w{5}

Un-Gepaart Trennzeichen (raw: \d{2}Some\+33\+\w{5})

+\d{2}Some\+33\+\w{5}+ parsen zu \d{2}Some+33+\w{5} und
+\d{2}Some\\+33\\+\w{5}+ wird nicht analysieren, da das Trennzeichen un-escaped ist.