我的主要问题是页面上有一些输出,空格字符写为“
”。我想用空格替换它。我尝试了str_replace(" "," ",$mystr)
甚至preg_replace("/( )/", " ", $mystr)
,但无济于事。我该怎么做呢?更一般地说,如果有其他html代码作为输出,如"&"
,有没有办法用实际的字符输出而不是html代码替换它们?
编辑:我在这里澄清一些事情:我不希望人们在可编辑页面的源代码中输入“< s c r i t t>”标签。为了防止这种情况,我们需要一些机制来转义特殊字符。但问题是一些有效的字符也被转义。我想要揭穿它们,但也想确保没有违反安全措施。
答案 0 :(得分:4)
你刚才这样做吗?
str_replace(" ", " ", $mystr);
或者你这样做?
$mystr = str_replace(" ", " ", $mystr);
str_replace
和preg_replace
都返回一个值,它们不会就地更改字符串。
答案 1 :(得分:2)
我认为你正在寻找html_entity_decode
。
答案 2 :(得分:2)
查看html_entity_decode功能。
答案 3 :(得分:1)
str_replace应该替换文本的那部分,因为它不会占用帐户中的正则表达式,所以我猜其他问题
答案 4 :(得分:1)
<?php
$string = "<p>Hello,& n b s p ;world</p>"; # Remove the spaces here - Stackoverflow bug doesn't let me enter the normal string.
$string = str_replace("& n b s p ;", " ", $string);
print $string;
?>
这对我有用。也许你期望它修改字符串而不是返回修改后的版本?
答案 5 :(得分:0)
我相信您正在寻找的功能是http://us2.php.net/manual/en/function.urldecode.php urldecode
答案 6 :(得分:0)
你试过了吗?
$text=html_entity_decode(str_replace('& nbsp;',' ',$text));
[删除&符号之间的空格:这是由于Stack Overflow的格式化]
它会将无破坏空格与普通空格交换,然后解码任何其他剩余的html实体。
答案 7 :(得分:0)
您实际需要的是基于正确的HTML解析器的HTML过滤器,因此您只能通过脚本传递指定的HTML部分。
答案 8 :(得分:0)
看看HTML Purifier。给它一个允许的标签/属性的白名单,它会为你过滤一切。
答案 9 :(得分:0)
由于可能会出现尾随分号,因此您可能需要考虑使用正则表达式:
preg_replace("/ [;]?/", " ", $str)
您可以[;]?
替换;?
。但Stack Overflow似乎取代 
(这是用ZERO WIDTH JOINER U + 200D编写的)所以我使用了[;]?
。