我有一个来自用户输入的文本。文本中包括各种电子邮件,链接以" HTTP/HTTP/WWW"开头。例如:我有下面的文字。
Lorem ipsum dolor email@foo.com sit amet https://foo.com/path?query=string
Lorem ipsum foo.com www.foo.com Lorem ipsum dolor
被指示的输出将是。
Lorem ipsum dolor <a href="mailto:email@foo.com>email@foo.com</a> sit amet <a href="https://foo.com/path?query=string">https://foo.com/path?query=string</a>
Lorem ipsum <a href="foo.com">foo.com</a> <a href="www.foo.com">www.foo.com</a> Lorem ipsum dolor
尝试此代码,请参阅此演示
<?php
$linkArray = ['Lorem ipsum dolor sit amet','email@gmail.com','google.com','https://www.google.com'];
foreach($linkArray as $link){
if(preg_match('/((https://)?([A-z]+@)?([A-z]+)?.([A-z]+)?)/',$link,$match)){
if(preg_match('/(@)/',$link,$m)){
echo '<a href="mailto:'.$match[1].'">'.$match[1].'</a><br>';
}else{
echo '<a href="'.$match[1].'">'.$match[1].'</a><br>';
}
}else{
echo $link.'<br>';
}
}
?>