Прежде всего, вам не следует использовать регулярные выражения, чтобы попытаться «разобрать» HTML - что не совсем регулярно.
Если использовать что-то вроде DOMDocument::loadHTML
, и некоторые запросы XPath, как правило, являются гораздо лучшим решением.
Но, если вы действительно хотите использовать регулярное выражение (и, судя по вашим комментариям к другим ответам), вы должны использовать /
как разделитель регулярных выражений : в HTML уже слишком много сокращений - как вы уже заметили, это будет уходящий ад.
Например, вы можете использовать #
в качестве разделителя регулярных выражений:
$str = <<<STR
<strong>Label:</strong></font></td>
<td valign="top" width="82%"> <font face="Arial" size="2">
I. NEED. ISOLATION </font> </td>
STR;
$regex = '#<strong>Label:</strong></font></td>
<td valign="top" width="82%"> <font face="Arial" size="2">
(.+?) </font> </td>#';
if (preg_match($regex, $str, $m)) {
var_dump($m[1]);
}
Получит вас:
string 'I. NEED. ISOLATION' (length=18)
Обратите внимание, что единственное, что я изменил по сравнению с вашим предложенным кодом, это разделитель регулярных выражений; -)
И, используя символ, которого нет в строке HTML, мне некуда бежать - особенно мне не нужно экранировать все /
s - что означает, что регулярное выражение гораздо проще для обоих пиши, читай и понимай.