Domanda

    

Questa domanda ha già una risposta qui:

         

Esiste un'utilità che convertirà POSIX in PCRE per PHP? Sono un po 'confuso dal manuale di PHP su PCRE, e mentre proverò a trovare maggiori informazioni su PCRE, mi chiedevo se qualcuno avesse progettato una tale utilità.

Oppure, se qualcuno spiegasse come convertire quanto segue, andrebbe anche bene:

ereg("^#[01-9A-F]{6}<*>quot;, $sColor)

Ma per favore spiega come è fatto, non ditemi solo la conversione.

È stato utile?

Soluzione

preg_match("/^#[01-9A-F]{6}$/", $sColor)
In questo caso devi solo aggiungere i due delimitatori.

In perl puoi scrivere qualcosa come

if ( s =~ /x.+y/ )
{ print "match"; }
Come puoi vedere, l'espressione regolare effettiva è incapsulata in //. Se si desidera impostare un'opzione sull'espressione regolare, la si inserisce dopo la seconda /, ad es. commutando l'espressione su non gratificato di default /x.+y/U
pcre ora emula questo comportamento. Sebbene sia necessario chiamare una funzione, è necessario fornire anche i delimitatori e impostare le opzioni dopo il secondo delimitatore. In perl il delimitatore deve essere /, con pcre puoi scegliere più liberamente
preg_match("/^#[01-9A-F]{6}$/", $sColor)
preg_match("!^#[01-9A-F]{6}$!", $sColor)
preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here
preg_match("^#[01-9A-F]{6}$", $sColor)
lo stesso di pcre, meglio scegliere un carattere che non appare nell'espressione.

Altri suggerimenti

preg_match (" / ^ # [01-9A-F] {6} $ / D " ;, $ sColor)

Nota il D . Le persone se ne dimenticano continuamente. Senza di essa $ consentirà un carattere di nuova riga finale. Una stringa come " # 000000 \ n " passerebbe. Questa è una sottile differenza tra POSIX e PCRE.

E, naturalmente, [01-9] può essere riscritto in [0-9] .

A proposito, PHP supporta sia espressioni regolari PCRE che POSIX. Ecco la sezione del manuale di PHP sulle espressioni regolari POSIX, quindi non è necessario convertirle: http://www.php.net/manual/en/book.regex.php

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top