Espressione regolare per abbinare tag HTML <p> usando PHP

Ho alcuni contenuti come questo

<p>some content, paragraph 1</p> <p>some content, paragraph 2</p> <p>some content, paragraph 3</p> 

Vorrei tornare al primo paragrafo, ad es

 <p>some content, paragraph 1</p> 

Qualcuno può aiutarmi con il codice regex?
'<p>(.*.)</p>' sembra non funzionare

puoi farlo in questo modo:

 if (preg_match('%(<p[^>]*>.*?</p>)%i', $subject, $regs)) { $result = $regs[1]; } else { $result = ""; } 

Metti alla prova la tua string contro l'espressione regolare, se ci sono delle corrispondenze, ottieni il primo e solo il primo, se non ci sono $ il risultato sarà una string vuota.

Se devi get più del primo risultato, puoi scorrere l'arrays $ regs. E di voi avete bisogno di trovare qualsiasi altro tag per cambiare la normale espressione di battitura, ad esempio per trovare i tag di IMAGE che utilizzate:

 (<img[^>]*>.*?</img>) 

EDIT: Se stai elaborando row per row (con solo il tag che stai cercando) puoi mettere ^ … $ attorno all'espressione per far corrispondere una row intera, come questa:

 if (preg_match('%^(<p[^>]*>.*?</p>)$%im', $subject, $regs)) { $result = $regs[1]; } else { $result = ""; } 

HTH, saluti.

Impedisci di includere il tag <pre>, puoi utilizzare:

 if (preg_match('/(<p(>|\s+[^>]*>).*?<\/p>)/i', $subject, $regs)) { $result = $regs[1]; } else { $result = ""; } 
  if (preg_match("/\b1\b/i", "some content, paragraph 1")) { echo "A match was found."; } else { echo "A match was not found."; } 

Dove 1 corrisponde al termine …

Questo è un aiuto?