我正在使用PHP和MySQL,并通过回显$ Content来显示存储在数据库中的文章。我想在第二段之前包含另一个文件,它以[p]开头。事实上,你(我在这里用括号替换了段落标记。)
这不起作用......
$BaseINC = '../../Geobop';
$Content = str_replace('<p>In fact, you', ''.require_once($BaseINC."/$MyPHP/inc/A/Test.php").'', $Content);
显示错误警告:require_once(../../ Geobop / 2B / inc / A / Test.php
实际上,你)[function.require-once]:失败open stream:如果我将A / Test.php改为A / Test.php;)(添加分号),它会再次失败。
如果我删除了我试图替换的字符串,它就可以解决问题。
$BaseINC = '../../Geobop';
$Content = str_replace('<p>In fact, you', ''.require_once($BaseINC."/$MyPHP/inc/A/Test.php").'', $Content);
奇怪的是,它取代 [p]实际上,你的数字 1 ,我在测试文件中插入了文本(Test.php)显示在页面顶部。
谁能告诉我我做错了什么?
我还应该提一下,Test.php实际上位于一个网站(MySite1)上,而我预览的文章则位于另一个网站上。但是,我的所有网站都包含存储在MySite1上的文件。我已经收录了数千个文件;我还没想办法用str_replace操作来做这件事。感谢。
答案 0 :(得分:1)
我认为你不想要页面,而是想要字符串中的内容,对吗?在这种情况下,您应该使用file_get_contents($filename)
代替。这将返回一个字符串,该字符串可用作str_replace
的参数。如果没有错误,require
将返回1。它不返回其内容(!);除非使用return statement
从该文件显式返回。
把它变成:
$BaseINC = '../../Geobop';
$Content = str_replace('<p>In fact, you', file_get_contents($BaseINC."/$MyPHP/inc/A/Test.php"), $Content);
使用require
或include
不会在字符串中显示其内容。相反,它运行其中的代码。如果是PHP,则执行它。如果是HTML,则输出。这就是您看到字符串显示在页面顶部的原因。