簡體   English   中英

PHP過濾表單輸入

[英]PHP Filtering Form Input

我敢肯定有人曾經講過,但是我在快速搜索該網站時沒有找到它。 現在,我正在嘗試過濾所見即所得的一些輸入,以便它將刪除諸如¢©÷µ·¶±€£®§™¥之類的字符,但保留HTML字符。 我已經嘗試了htmlentities和htmlspecialcharacters,但這似乎仍然使那些字符保持不變。 已經存在的任何方法,或者有人擁有可以處理此問題的正則表達式? 謝謝!

如果您使用的是PHP> 5.2.0,則過濾器可能會有所幫助。

正則表達式應該起作用:

$ text = preg_replace('/ [¢©÷µ·¶±€£®§™¥] * /','',$ text);

您還可以替換以下項目:

$ bad = array('©','®'); $ good = array('©','®');

$ text = preg_replace($ bad,$ good,$ text);

您是否嘗試過htmlentities()函數? 嘗試這樣:

$text = htmlentities($text);

您還可以在http://php.net/manual/en/function.htmlentities.php上查看其他一些可選參數。 您可能至少需要設置quote_stylecharset

如果您想完全刪除那些字符,而不是僅僅將它們轉換為HTML實體,則htmlentities()htmlspecialchars()不會為您服務。

編輯

我只是注意到您曾經說過要保留HTML實體。 如果是這樣,請使用htmlentities() 它將所有這些符號轉換為等效的html實體。 如果回顯它,您仍將看到嘗試刪除的字符,但是如果查看源,則將看到&name; 格式化實體。


為此,您可能需要使用正則表達式。 大多數PHP函數都試圖以一種或另一種格式為您保留這些字符。 令人驚訝的是,它們並不是刪除它們的功能,至少我知道!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM