2012-12-08 170 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事實上,先生 –