不允许使用textarea格式的href标记

时间:2010-06-09 07:44:17

标签: php html regex

如何阻止用户在联系表单文本区域中输入任何网址或链接,我已尝试过此但不起作用 -

   if (!isset($_POST['submit']) && preg_match_all('/<a.*>.*<\/a>/', $_POST['query']))
      {
   echo "<h1 style='color:red;'>HTML Tag Not allowed </h1>";
      }
   else {
       //sendmail 
      }

请帮帮我

4 个答案:

答案 0 :(得分:4)

用strip_tags

尝试使用strip_tags。它将允许您删除所有不允许的标记。

实施例

手册中的示例:

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>

您可以使用以下内容:

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';

// Allow some tags but not <a>
echo strip_tags($text, '<p><strong><li><ul>');
?>

答案 1 :(得分:2)

您的方法不起作用,因为可能在发布链接时没有人会使用正式的HTML标记。要清理输入,可以使用PHP Strip tags函数。

答案 2 :(得分:1)

$regex_pattern = "/<a href=\"(.*)\">(.*)<\/a>/";

if( (strlen($_POST['query']) > 0) && (preg_match_all($regex_pattern, $_POST['query']) )

{    echo“标签发现”; }

答案 3 :(得分:0)

尝试:

if(!empty($_POST['submit']) and preg_match("/<a\shref=\"[a-z]{3,5}:\/{2}(?:w{3}\.)?[^>]+.([^<]+)/i",$_POST['query'])){
            //send mail
    }