【问题标题】:How to remove tags except mail format container tags如何删除除邮件格式容器标签之外的标签
【发布时间】:2012-09-03 10:53:03
【问题描述】:

我的问题很难用文字来描述,我举个例子试试:

str = '<p>lorem ipsum <xyz@abc.com> donor sit <br></p>';

我需要删除除&lt;xyz@abc.com&gt;

之外的所有标签

我们如何在 javascript 和 PHP 中进行操作?

我的 PHP 解决方案:

class test {
    public function keepMailAddresses($text){
       $callBack = array($this,'_keepMailAddresses');
       return preg_replace_callback('/(<)([^0-9][a-zA-Z0-9_]*([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4})(>)/i', $callBack, $text);        
    }

    private function _keepMailAddresses($matches){
       return '&lt;'.$matches[2].'&gt;';
    }

}

$obj = new test();
echo $obj->keepMailAddresses('<p>lorem ipsum <xyz@abc.com> donor sit <br></p>');

【问题讨论】:

  • 这是无效标记。电子邮件地址周围的&lt;&gt; 应该是&amp;gt; 和&amp;lt;,或者,如果这是XHTML,P 文本应该是CDATA 部分。现在电子邮件的方式是创建一个无效元素。
  • @Gordon 我完全同意你的看法,我需要将 转换为 >和 <只有当它是一个电子邮件地址时,其他大小写标签才应该被条带化。
  • @WebolizeR 不,您应该已经将尖括号作为实体插入...
  • 案例非常非常复杂,正因为如此,我需要做这样的事情,10年的代码,糟糕的逻辑等等。
  • 你的php函数工作gr8,你现在有什么问题?在 javascript 中做同样的事情?

标签: php regex email replace


【解决方案1】:

好的,我的解决方案有点奇怪,但可以解决问题:D

$pagecode = '<p>lorem ipsum <xyz@abc.com> donor <abc_def.xyz@abc.com> sit <abc_def.xyz@abc.abc.com><br></p>';

// this will check if it's a real email but you don't need it
/*$allowed = preg_match_all("/\<+([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})+\>/i", $pagecode, $matches);*/

$allowed = preg_match_all("/\<([_a-z0-9-\.]+)@([_a-z0-9-\.]+)\>/i", $pagecode, $matches);

$allowed = implode(" ", $matches[0]);
$output = strip_tags($pagecode, $allowed);
echo htmlentities($output);

【讨论】:

    【解决方案2】:

    在标题部分使用下面

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    

    这样放

    str = '<p>lorem ipsum "<xyz@abc.com>" donor sit <br></p>';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 2011-06-20
      相关资源
      最近更新 更多