简体   繁体   English

如何使用正则表达式提取PHP中的文本

[英]How to extract text in php using regex

My Text : 我的文字:

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 

I want to extract iso-8859-6 我想提取iso-8859-6

you could do: preg_match('/charset="([^"]+)"/',$string,$m); echo $m[1]; 您可以这样做: preg_match('/charset="([^"]+)"/',$string,$m); echo $m[1];


Edit: In case all need matching (prompted from other answer) modify like this: 编辑:万一所有需要匹配(从其他答案提示)的修改如下:

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

The regex you are looking for is: 您要查找的正则表达式是:

iso[^"]+

The php code you need is: 您需要的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];
?>

The output is: 输出为:

iso-8859-6

if you are interested in getting both matches (since you have 2 in the string) and iterate through them you should do something like this. 如果您有兴趣获得两个匹配项(因为字符串中有2个)并对其进行迭代,则应该执行以下操作。 also i used single quotes to not have to escape the quotes inside the regex. 我也使用单引号不必转义正则表达式内的引号。 used ridgerunners suggestions aswell. 也使用了ridgerunners的建议。

preg_match_all('/charset="([^"]+)"/', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
    # Matched text = $result[0][$i];
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM