PHP str_replace与文件的内容

时间:2017-07-28 21:17:15

标签: php

我想创建类似WordPress使用的短代码。因此,当用户将 [相关] 放入帖子时,它会显示中的内容包括“includes / related_article_inline.php”而不是 [相关] 。到目前为止我尝试过的是:

$searchString = '[related]';
$replacementString = '<?php echo include "includes/related_article_inline.php"; ?>';
echo str_replace( $searchString ,$replacementString ,$post_content );

但是,这不是很正常。有人知道如何用 includes / related_article_inline.php 的内容替换 [related] 吗?

1 个答案:

答案 0 :(得分:0)

str_replace不包含该文件,但只会进行简单的字符串替换。所以你的浏览器会显示

  

包括“includes / related_article_inline.php”;

在某个地方,您添加[replace]

的位置

两种可能的解决方案。

1)如果你正面知道[replace]将在你的后期内容中:在你的str_replace之前包含它,将输出存储到一个字符串中(使用output-buffering),并且做实际更换。

ob_start(); // Start output buffering
include "includes/related_article_inline.php";
$replacementString = ob_get_clean(); // Store output in variable, and stop output-buffering
echo str_replace($searchString, $replacementString, $post_content);

2)如果您不知道正面[replace]将在您的后期内容中,您可能并不总是想要包含它。使用preg_replace_callback,这样只有在必要时才会包含该文件。

$replacementFunction = function() {
    ob_start(); // Start output buffering
    include "includes/related_article_inline.php";
    return ob_get_clean(); // Return output, and stop output-buffering
};
$searchRegex = '/\[replace\]/'; // You have to rewrite your search-string to a regular expression
echo preg_replace_callback($searchRegex, $replacementFunction, $post_content);