Как извлечь текст в PHP с помощью регулярных выражений - PullRequest
11 голосов
/ 08 апреля 2011

Мой текст:

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 ]

20 голосов
/ 08 апреля 2011

вы могли бы сделать: preg_match('/charset="([^"]+)"/',$string,$m); echo $m[1];


Редактировать: В случае, если все нужное соответствие (подсказано другим ответом), измените это так:

preg_match_all('/charset="([^"]+)"/',$string,$m); print_r($m);

1 голос
/ 03 декабря 2011

Регулярное выражение, которое вы ищете:

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
0 голосов
/ 08 апреля 2011

если вы заинтересованы в получении обоих совпадений (так как у вас есть 2 в строке) и итерации по ним, вы должны сделать что-то вроде этого. Также я использовал одинарные кавычки, чтобы не оставлять кавычки внутри регулярного выражения. Подержанные Ridgerunners предложения также.

preg_match_all('/charset="([^"]+)"/', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
    # Matched text = $result[0][$i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...