Как извлечь текст в php с помощью регулярных выражений
Мой Текст:
12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: base64 DQrn0Ocg0dPH5MkgyszR6sjqySDl5iDH5OfoyuXq5A0KDQrH5OTaySDH5NnRyOrJIOXP2ejlySAx MDAlDQogCQkgCSAgIAkJICA= --_12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/html; charset="iso-8859-6" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxzdHlsZT48IS0tDQouaG1tZXNzYWdlIFANCnsNCm1hcmdpbjowcHg7
Я хочу извлечь iso-8859-6
3 ответов:
Вы могли бы сделать:
preg_match('/charset="([^"]+)"/',$string,$m); echo $m[1];
Edit: в случае, если все нужно сопоставить (предложено из другого ответа) изменить следующим образом:
preg_match_all('/charset="([^"]+)"/',$string,$m); print_r($m);
Регулярное выражение, которое вы ищете:
iso[^"]+Вам нужен php-код:
<?php $subject='12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: base64 DQrn0Ocg0dPH5MkgyszR6sjqySDl5iDH5OfoyuXq5A0KDQrH5OTaySDH5NnRyOrJIOXP2ejlySAx MDAlDQogCQkgCSAgIAkJICA= --_12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/html; charset="iso-8859-6" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxzdHlsZT48IS0tDQouaG1tZXNzYWdlIFANCnsNCm1hcmdpbjowcHg7'; $pattern='/iso[^"]+/m'; if (preg_match($pattern, $subject, $match)) echo $match[0]; ?>Вывод:
iso-8859-6
Если вы заинтересованы в получении обоих совпадений (так как у вас есть 2 в строке) и перебираете их, вы должны сделать что-то вроде этого. также я использовал одинарные кавычки, чтобы не нужно было экранировать кавычки внутри регулярного выражения. также использовал предложения риджеруннеров.
preg_match_all('/charset="([^"]+)"/', $subject, $result, PREG_PATTERN_ORDER); for ($i = 0; $i < count($result[0]); $i++) { # Matched text = $result[0][$i]; }
Comments