【问题标题】:Getting text from a file and giving value to it从文件中获取文本并赋予其价值
【发布时间】:2011-02-03 16:39:57
【问题描述】:

一直在帖子中寻找我的问题的答案,但我找不到可以指导我的东西。抱歉,如果之前有人问过这个问题。

我有一个名为 email.html 的 html 文件。在内容中我有#user# #pass# 和#text#

我需要做的是获取#user# #pass# 和#text# 并将它们更改为真实的东西。 真实的东西是来自数据库的数据。

我一直在考虑用

编写一个 php 文件
$email = file_get_contents('email.html'); 

但是后来我迷路了,谁能告诉我如何获取##标签并赋予它们价值?

请指导这位悲伤的学生;)

非常感谢!

【问题讨论】:

    标签: php arrays file file-get-contents


    【解决方案1】:

    只要保证这些字符串是唯一的,您就可以简单地拥有这样的东西:

    假设要替换的数据数组如下所示:

    Array(
        'user' => 'example@exmaple.com',
        'pass' => 'foo',
        'text' => 'Welcome Mr. Example!',
    );
    

    然后

    foreach ($data as $tag => $datum) {
        $email = str_replace('#' . $tag . '#', $datum, $email);
    }
    

    编辑:xil 提出了一个很好的观点:数组。

    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 简单的解决方案。
    【解决方案2】:

    可以这样做:

    $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);
    

    更多信息在这里:

    http://php.net/manual/en/function.preg-replace.php

    【讨论】:

      【解决方案3】:

      如果这个文本文件的格式清晰一点,就更容易提供帮助了。

      查看php函数strtr()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多