我想创建类似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] 吗?
答案 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);