如何在PHP中从包含'<'符号的字符串中删除空格?

3

我的字符串包含 '<' 符号。

例子:

$str = "S t a c k < o v e r f l o w";

当我使用str_replace()函数时

$str = str_replace(' ', '', $str);
echo $str;

输出结果为:
Stack

所有在<之后的字母都不会被打印出来。

我哪里错了?请帮帮我!


2
你所看到的是“堆栈”...而你用来查看输出的工具则截断了其余部分(让我猜猜:浏览器?)。在控制台中,这将按预期工作。 - YvesLeBorg
2
它在 https://3v4l.org/OGcok 中正常工作。因为字符串包含 <,浏览器将其视为标签开始。因此,请使用 htmlspecialchars() - Mohammad
3个回答

4
字符并没有丢失,str_replace函数很好地工作了。问题在于输出结果字符串时,“<”被误认为是html标签的开始,而“<”之后的所有内容被认为是该标签本身。因此,标签部分无法显示。如果您将代码更改为以下内容,就可以看到这一点:
$str = "S t a c k < o v e r f l o w";
$str = htmlspecialchars(str_replace(' ', '', $str));
echo $str;

输出结果将显示为:
Stack<overflow

1
使用htmlspecialchars函数。
htmlspecialchars(str_replace(' ', '', $str));

0
你可以使用以下方法:
$str = "S t a c k < o v e r f l o w";

将 < 替换为 #

$str = str_replace('<', '#', $str);

将空格替换为无空格

$str = str_replace(' ', '', $str);

将#替换为空格

$str = str_replace('#', ' ', $str);

echo $str;

输出

Stack Overflow

如果字符串中有HTML标签,您也可以这样做

// Variable to check
$str = "<h1>Hello World!</h1>";

// Remove HTML tags from string
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;

参考资料:W3Schools


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接