我有一个代码可以将文本中的所有链接转换为真正的HTML链接
//add auto link
$oldMessage = $discussion->message;
$newMessage = preg_replace('!((http\:\/\/|ftp\:\/\/|https\:\/\/)|www\.)([-a-zA-Zа-яА-Я0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?!ism', '<a href="//$3" target="_blank" ">$1$3</a>',$oldMessage);
$discussion->message = $newMessage;
更好地理解这是$ oldMessage示例文本
<div>Hier eine Liste der Protokolle von Medi-Learn:</div>
<br><br>
<div>http://www.medi-learn.de/pruefungsprotokolle/facharztpruefung/detailed.php?ID=1266</div>
<a href="google.de">test</a>
<br><div>http://www.medi-learn.de/pruefungsprotokolle/facharztpruefung/detailed.php?ID=1231</div>
<br><div>http://www.medi-learn.de/pruefungsprotokolle/facharztpruefung/detailed.php?ID=1221</div>
<br><div>http://www.medi-learn.de/pruefungsprotokolle/facharztpruefung/detailed.php?ID=1188</div>
<br><div>http://www.medi-learn.de/pruefungsprotokolle/facharztpruefung/detailed.php?ID=1187</div>
<br><div>http://www.medi-learn.de/pruefungsprotokolle/facharztpruefung/detailed.php?ID=1178</div></div>
如果原始$ oldMessage已包含链接(请参阅测试),问题是无法正常工作!?!?
对此有何解决方案?
答案 0 :(得分:0)
此解决方案适合我
preg_match_all('!(((f|ht)tp(s)?://)[-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+)!i', $content, $matches);
foreach ($matches[0] as $key=>$link) {
if (!preg_match('!<a(.*)'.$link.'(.*)/a>!i', $content))
{
$content = str_replace($link, '<a href="'.$link.'" target="_blank">'.$link.'</a>', $content);
}
}