2012-12-08 127 views
0

我有很长的字符串一些特殊字符,特别是引号(”“)和大于,小于括号。(<,>),并且它搞乱了我的HTML。PHP替代preg_replace()?

我在想,如果有一个简单的方法,用它们的ASCII等价物来替换这些所有出现(& GT;,LT &;等),我花了很多时间写我自己的功能之前,我在可怕的正则表达式:/

谢谢您

回答

2

htmlentities()htmlspecialchars()可用,这取决于你确切的需要。如果你只是想打破,<>,你可以做

$new_str = htmlspecialchars($str, ENT_NOQUOTES); 
+0

美丽。实体是我所需要的。谢谢。 –

4

我相信你正在寻找htmlspecialchars

该函数将用它们的html实体等价物替换所有的html字符。

例:

<?php 
$before="<code>"; 
$after=htmlspecialchars($before); 
echo $after; //&lt;code&gt; 
?> 

要确保,如果你要同时更换单引号使用ENT_QUOTES作为第二个参数。

1

您可以使用php的str_replace函数。检查php手册http://php.net/manual/en/function.str-replace.php

$text = str_replace('<', '', $text); 

此代码通过将其替换为空字符串来从$ text中移除小于号的符号。

但我强烈建议您使用preg_replace()探索正则表达式方法。速度更快,功能更强大。

+0

的preg_replace不会比str_replace函数用于单个键/值替换更快。 –

+1

你是对的,但它听起来像提问者将取代一大堆字符。 – Anton

+0

@Anton事实上,先生 –