2013-11-04 40 views
0

我想從輸入字符串中清除<>個字符,以便使其「Web安全」並避免腳本注入惡作劇。從字符串剝離HTML標籤時注意什麼?

我知道strip_tags()可用於這一點,但是這將導致一個字符串,如這樣的:

We are looking at counts < 5000 for this test run被截斷爲:

We are looking at counts

我想將它轉換爲:

We are looking at counts 5000 for this test run

這不是完美的,但在字符串中較少的信息丟失的方式。

我知道這可以用例如正則表達式來實現,但是這是以什麼方式不安全?我的意思是,strip_tags()對字符串做了一些特殊的處理,只是刪除了<>不會執行的正則表達式。

我現在不想使用htmlentities(),因爲這會混淆我們的前端代碼。

+2

這並不直接回答你的問題,但你可能也想看看[htmlentities](http://php.net/manual/en/function.htmlentities.php)。 – CompuChip

+0

@CompuChip我認爲使用'htmlentities()'而不是僅僅刪除'<'是更好的解決方案。或者只是使用'$ convertedBracketStr = str_replace(array('<', '>'),array('>','<'),$ str);' – TiMESPLiNTER

+1

*正則表達式:/ <[A-z\/][^> *> /它會找到任何<>然後結束> –

回答

1

如果你只是想剝離<>使用下面的代碼可以這樣做:

$str = 'We are looking at counts < 5000 for this test run'; 

$convertedBracketStr = str_replace(array('<', '>'), null, $str); 

結果將是:We are looking at counts 5000 for this test run

+0

我現在正在使用此解決方案。謝謝!如果有人可以說爲什麼這會比使用strip_tags()更安全,請在這裏留言。 –