Domanda

Voglio controllare i contenuti pubblicati nei confronti di un modello. Sto avendo creazione di questo preg_match problemi (o array?). Il modello di essere ...

TEXTHERE:TEXTHERE
TEST:TEST
FILE:FILE

E

TEXTHERE:TEXTHERE TEST:TEST FILE:FILE

Voglio controllare sia per modello, quello con gli spazi e quello con l'interruzione di riga. Se il contenuto postato è questo ... (con interruzioni di riga in più e / o spazi bianchi)

TEXTHERE:TEXTHERE

TEST:TEST

FILE:FILE

lo voglio per visualizzare in qualche modo come ...

TEXTHERE:TEXTHERE
TEST:TEST
FILE:FILE

ed ancora corrispondere contro il modello.

Voglio farlo funzionare ancora, in qualche modo mettendo a nudo l'interruzione di riga extra / eo lo spazio vuoto supplementare ...

$loader = file_get_contents( 'temp/load-'.$list.'.php' );

Se non segue lo schema di stringhe, voglio che l'uscita di un messaggio di errore, ecc.

if($loader == ???) { // done
} else { // error
}
È stato utile?

Soluzione

Provare qualcosa di simile a questo:

$loader = 'TEXTHERE:TEXTHERE

TEST:TEST

FILE:FILE';

if(preg_match('/^[A-Z]+:[A-Z]+(\s+[A-Z]+:[A-Z]+)*$/', $loader)) {
    echo preg_replace('/\s{2,}/', "\n", $loader);
}

Output:

TEXTHERE:TEXTHERE 
TEST:TEST
FILE:FILE

Si otterrà la stessa uscita di:

$loader = 'TEXTHERE:TEXTHERE        TEST:TEST          FILE:FILE';

Per prima cosa verificare se corrisponde a:

[A-Z]+:[A-Z]+    # match a word followed by a colon followed by a word
(                # open group 1
  \s+            #   match one or more white space chars (includes line breaks!)
  [A-Z]+:[A-Z]+  #   match a word followed by a colon followed by a word
)*               # close group 1 and repeat it zero or more times

E se corrisponde quanto sopra, si sostituisce 2 o più successivi caratteri di spazio vuoto \s{2,} con una sola interruzione di linea.

Naturalmente, si potrebbe essere necessario regolare [A-Z]+ a qualcosa d'altro.

Altri suggerimenti

   preg_match('~^\s*(\S+:\S+(\s+|$))+$~', $str)

questo corrisponde a "AA: BB CC: DD" o "AA: BB \ n CC: DD" e non su "AA: BB foo CC: DD"

if(preg_match_all('/([A-Za-z0-9-_\.:]+)[\n\s]*/', $subject, $matches)){
  print $matches[0][0]."<br />".$matches[0][1]."<br />".$matches[0][2];
}else{
  // error
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top