Регулярное выражение для соответствия тегу HTML <p> с использованием PHP

У меня есть такой контент, как этот

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

Я хотел бы вернуть первый абзац, т.е.

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

Может ли кто-нибудь помочь мне с кодом регулярного выражения?
'<p>(.*.)</p>' похоже, не работает

вы можете сделать это так:

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

Вы тестируете свою строку против регулярного выражения, если есть какое-то совпадение, вы получаете первый и только первый, если нет, то $ result будет пустой строкой.

Если вам нужно получить больше, чем первый результат, вы можете перебирать массив $ regs. И вам нужно найти любой другой тег, чтобы изменить регулярное выражение, чтобы его обработать, например, чтобы найти теги IMAGE, которые вы используете:

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

EDIT: если вы обрабатываете строку за строкой (только с тегом, который вы ищете), вы можете поместить ^ … $ вокруг выражения, чтобы соответствовать полной строке, например:

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

HTH, С уважением.

Предотвратить включение тега <pre>, можно использовать:

 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."; } 

Где 1 – согласованный термин …

Это какая-то помощь?