一直在帖子中寻找我的问题的答案,但我找不到引导我的东西。对不起,如果之前有人询问过。
我有一个名为email.html的html文件。在内容中我有#user ## pass#和#text#
我需要做的是获取#user ## pass#和#text#并为真实事物更改它们。 真实的东西是来自数据库的数据。
我一直在想用
的php文件$email = file_get_contents('email.html');
然后我迷路了,任何人都可以请告诉我如何获得##标签并给它们价值?
请引导这位伤心的学生;)
Thansk很多!
答案 0 :(得分:2)
只要这些字符串保证唯一,您可以简单地使用以下内容:
假设您要替换的数据数组如下:
Array(
'user' => 'example@exmaple.com',
'pass' => 'foo',
'text' => 'Welcome Mr. Example!',
);
然后
foreach ($data as $tag => $datum) {
$email = str_replace('#' . $tag . '#', $datum, $email);
}
function addHashMarks($v) { return "#{$v}#"; }
$email = str_replace(
array_map('addHashMarks', array_keys($data)),
array_values($data),
$email
);
IMO,如果您正在做的事情实际上并不使用正则表达式,则没有理由启动REGEX解析器; str_replace
要快得多。
编辑:我实际上打算用匿名函数做addHashMarks
部分,但是(a)那些只有5.3+而且(b)我不想一次引入太多概念 - 但严重的是,去查看匿名函数。
答案 1 :(得分:1)
可以这样做:
$email = file_get_contents('email.html');
$patterns = array();
$patterns[0] = '#user#';
$patterns[1] = '#pass#';
$patterns[2] = '#text#';
$replacements = array();
$replacements[2] = 'user';
$replacements[1] = 'password';
$replacements[0] = 'your text';
$newEmail = preg_replace($patterns, $replacements, $email);
更多信息:
答案 2 :(得分:0)
如果此文本文件的格式更清晰,则可以更容易提供帮助。
查看php函数strtr()