我正在尋找一個正則表達式,將能夠替換所有鏈接,如<a href="javascript://potentiallybadstuff"> Link </a>
帶有警告。我一直在玩,但迄今沒有成功!正則表達式我一直都很糟糕,有人能指出我正確的方向嗎?我有這個到目前爲止:刪除javascript鏈接
編輯:人們說不要使用正則表達式 - HTML將是一個降價解析器的輸出,剝離標記中的所有HTML標記。因此,我知道所有鏈接的輸出將如上所述進行格式化,因此在這種特定情況下,正則表達式肯定會是一個好工具。我不允許用戶輸入純粹的HTML。所以做了非常類似的東西,嘗試創建一個JavaScript的鏈接,它會被刪除
<?php
//Javascript link filter test
if(isset($_POST['jsfilter'])){
$html = "<a href=\"". $_POST['jsfilter']."\"> JS Link </a>";
$pattern = "/ href\\s*?=\\s*?[\"']\\s*?(javascript)\\s*?(:).*?([\"']) /is";
$replacement = "\"javascript: alert('Javascript links have been blocked');\"";
$html = preg_replace($pattern, $replacement, $html);
echo $html;
}
?>
<form method="post">
<input type="text" name="jsfilter" />
<button type="submit">Submit</button>
</form>
不要。不要。它看起來像你正在接受HTML標籤。接受BBCode代替。標籤不是唯一需要擔心的事情。還有'img'標籤,'form'標籤,'script'標籤以及其他所有具有'onload'屬性等的內容。 – h2ooooooo
@ h2ooooooo嗯,我接受減價的HTML標籤剝離。我想鏈接可用,但只是不是JavaScript的?我不允許任何圖片或表格或腳本;只是鏈接 –