有点问题。我正在编写一个简单的函数来摆脱以下符号:<> [] {}。它只是从输入中删除它。
So I have:
$find = array("<", ">", "[", "]", "{", "}");
$replace = array("");
$cleanDetails = str_replace($find,$replace,$temporaryDetails);
问题是,例如,如果我写:
Oh! This is a <?php sample text ?>
它将消除从<直到>的所有内容!结果变为:
Oh! This is a
所以(我不理解preg_replace更好),我想到了:
$cleanDetails = preg_replace("/[\[<{}>\]]*/","",$temporaryDetails);
它不会替换单个<,> {,},[或],但是会删除对! 加!我该怎么做?
答案 0 :(得分:0)
它将消除从<直到>包括在内的所有内容!
不,情况更糟:它不会消毒任何东西。您看不到<?php ...?>
,因为PHP标记在HTML文件中无效,因此浏览器会自动将其转换为注释,因为它不知道该怎么做,请查看页面源代码:>
您是否尝试过使用其他字符串,例如"Oh! This is a <b>sample text </b>"
?我确定您会看到它粗体。
这是您在php shell中的代码:
$ php -a
Interactive shell
php > $find = array("<", ">", "[", "]", "{", "}");
php > $replace = array("");
php > $temporaryDetails = 'Oh! This is a <?php sample text ?>';
php > $cleanDetails = str_replace($find, $replace, $temporaryDetails);
php > echo $cleanDetails;
Oh! This is a <?php sample text ?>
str_replace
坏了吗?不,它确实在执行您要执行的操作:替换
<
>
[
]
{
}
带有空字符串。
问题很简单:"<?php sample text ?>"
中没有一个,因为"<"
与"<"
不相同。第一个是四个字符的字符串,第二个是一个单字符的字符串。
看看这个:
php > $temporaryDetails = 'Oh! This is a <?php sample text ?>';
php > $cleanDetails = str_replace($find, $replace, $temporaryDetails);
php > echo $cleanDetails;
Oh! This is a ?php sample text ?
您想要的可能是:
$find = array("<", ">", "[", "]", "{", "}");
$replace = "";