Umu*_*GÖZ 5 php regex email replace
用文字描述我的问题很困难,我会试着给出一个例子:
str = '<p>lorem ipsum <xyz@abc.com> donor sit <br></p>';
Run Code Online (Sandbox Code Playgroud)
我需要删除所有标签,除了 <xyz@abc.com>
我们怎样才能在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 '<'.$matches[2].'>';
}
}
$obj = new test();
echo $obj->keepMailAddresses('<p>lorem ipsum <xyz@abc.com> donor sit <br></p>');
Run Code Online (Sandbox Code Playgroud)
好吧,我的解决方案有点奇怪,但可以解决问题: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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |