我有一串注册表项,如下所示:
ThreatName REG_SZ c:\ temp保护代码REG_SZ a检查ThreatName REG_SZ c:\ windows保护
我想从字符串中提取“c:\ WHATEVER”。它在“ThreatName REG_SZ”和“Protection”之间出现多次。
如何使用PHP多次提取“c:\ WHATEVER”?
答案 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,因为没有必要。
编辑:修改了代码,省略了正确的输出格式。更新的方法将起作用,但如果目录中有空格,则可能只会拉出目录的第一部分。