我正在尝试制作在线代码编辑器,这样我就不必每次都将修改过的文件上传到网站。要编辑文件的内容,代码将获取其内容并将其以文本形式放入textarea中,如下所示:
<textarea id="text" name="contents">
<?php
include_once "useful.php";
if(isset($_GET["url"])){
echo file_get_contents($_GET["url"]);
}
?>
</textarea>
问题如下:
如果文件里面有</textarea>
标签,则关闭我的textarea标签关闭而不显示整个文件。
有一个简单的解决方案可以解决这个问题吗?先感谢您。 :)
答案 0 :(得分:2)
htmlspecialchars
功能将解决您的问题。
此代码可以满足您的需求:
<textarea>
<?php
//Fake file content
$fileContent = "</textarea> with something";
print htmlspecialchars($fileContent);
?>
</textarea>
答案 1 :(得分:0)
html_entity_decode()
和一些括号转换使我能够在<{i} <textarea></textarea>
块中显示HTML代码<textarea>
。
这是我在这里的第一个回复,所以请善待。 :)
我必须修复一个PHP文本文件编辑器,它将在<textarea></textarea>
窗口中输出其文件内容 - 但是,如果它读取的文件包含 <textarea></textarea>
块,输出窗口将关闭块并将其解释为HTML并关闭</textarea>
,文件的其余部分将不会显示在编辑器窗口中。
(换句话说,它是一个PHP脚本,可以加载文件并在<textarea></textarea>
窗口中显示其内容以进行编辑等。)
即。包含的文件:
Enter stuff here: <textarea name="blah"></textarea> Yay Stuff.
显示为:
Enter stuff here: <textarea name="blah">
(缺少所有其他内容!)
需要两种类型的解释。
对于 PHP 文件:
在通过本网站的帮助击败自己之后,我能够通过首先将结尾</textarea>
转换为</textarea>
来“清理”该块来欺骗翻译。
例如: ($ Body只是要在编辑器中显示的文件的内容)
//if reading a <textarea block of code
if (preg_match("%<textarea%/i",$Body)) {
//turn < > into < > for the end of textarea block
$Body=preg_replace("%</textarea>%/i","</textarea>", $Body);
//sanitize (this is the output window where the file content goes)
print html_entity_decode("</font><textarea>" .$Body. "</textarea>\n");
}
这允许窗口正确输出文件内容,例如:
Enter stuff here: <textarea name="blah"></textarea>
Yay stuff。
对于非PHP 文件(如HTML):
您必须搜索</textarea>
,然后才能使用".$Body."
即
$filetype=pathinfo($File);
$filetype['extension'];
$php_files=Array('php','php3','php5');
if (!in_array($filetype['extension'], $php_files)) {
$Body=preg_replace("%</textarea>%/i","</textarea>", $Body);
echo "</font><textarea> ".$Body." </textarea>\n";
}
注意:如果PHP文件没有包含<textarea>
,则可以使用:
print html_entity_decode($Body)
我也必须同意这一点。
注2: 我正在显示PHP 5+代码,但是我必须为PHP 5执行此操作,并且只是FYI它可以正常使用eregi()和eregi_replace()
它让我很生气,所以我希望这可以帮助别人。 ......疯了,我又回来了,更新了我的答案。 :)