从字符串PHP中提取多行文本

时间:2010-07-22 19:36:14

标签: php text registry

我有一串注册表项,如下所示:

ThreatName REG_SZ c:\ temp保护代码REG_SZ a检查ThreatName REG_SZ c:\ windows保护

我想从字符串中提取“c:\ WHATEVER”。它在“ThreatName REG_SZ”和“Protection”之间出现多次。

如何使用PHP多次提取“c:\ WHATEVER”?

1 个答案:

答案 0 :(得分:1)

一种方法是使用正则表达式,这是一个示例代码(未经测试)。


$string = "ThreatName REG_SZ c:\\temp Protection
Code REG_SZ c:\\a Check
ThreatName REG_SZ c:\\windows Protection";

preg_match_all("~.* REG_SZ (.*) ~iU", $string, $matches);

print_r($matches);

如果您想了解更多,请参阅php手册:preg_match_all()。或谷歌正则表达式获取更多信息。但基本上它看起来在REG_SZ和保护之间(U修饰符使它不成熟,因此它将寻找第一个保护)并返回除新行字符(。*)之外的所有内容。如果它分布在新行上,那么's'修饰符将有助于解决这个问题。

编辑:看到你想要他们所有人。这适用于所有人。

编辑:修正了正则表达式包含“ThreatName”,不确定这是否是动态的。还在字符串中添加了额外的斜杠,因为它们被解析为字符。

我不确定你是否必须在字符串上使用addslashes(),但可能需要它。

删除了isset,因为没有必要。

编辑:修改了代码,省略了正确的输出格式。更新的方法将起作用,但如果目录中有空格,则可能只会拉出目录的第一部分。