将所有 url 替换为 PHP 中的链接
Replace all urls as links in PHP
我想将文本中的所有 url 都设为超链接。我做了以下事情。但是缺少带有“:”的链接。任何帮助表示赞赏。
<?php
$string = "Hallo Studenten http://google.com/your/subpage and https://www.yahoo.com/my/subpage";
$regexp = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
$anchorMarkup = "<a href=\"%s://%s\" target=\"_blank\" >%s</a>";
preg_match_all($regexp, $string, $matches, \PREG_SET_ORDER);
foreach ($matches as $match) {
if (empty($match[1]) && empty($match[7])) {
$http = $match[2]?$match[2]:'http';
$replace = sprintf($anchorMarkup, $http, $match[0], $match[0], $match[1]);
$string = str_replace($match[0], $replace, $string);
}
}
echo $string;
?>
可以用preg_replace函数来完成:
$string = "Hallo Studenten http://google.com/your/subpage and https://www.yahoo.com/my/subpage";
$regexp = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
$anchorMarkup = "<a href=\"[=10=]\" target=\"_blank\" >[=10=]</a>";
echo preg_replace($regexp, $anchorMarkup, $string);
我想将文本中的所有 url 都设为超链接。我做了以下事情。但是缺少带有“:”的链接。任何帮助表示赞赏。
<?php
$string = "Hallo Studenten http://google.com/your/subpage and https://www.yahoo.com/my/subpage";
$regexp = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
$anchorMarkup = "<a href=\"%s://%s\" target=\"_blank\" >%s</a>";
preg_match_all($regexp, $string, $matches, \PREG_SET_ORDER);
foreach ($matches as $match) {
if (empty($match[1]) && empty($match[7])) {
$http = $match[2]?$match[2]:'http';
$replace = sprintf($anchorMarkup, $http, $match[0], $match[0], $match[1]);
$string = str_replace($match[0], $replace, $string);
}
}
echo $string;
?>
可以用preg_replace函数来完成:
$string = "Hallo Studenten http://google.com/your/subpage and https://www.yahoo.com/my/subpage";
$regexp = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
$anchorMarkup = "<a href=\"[=10=]\" target=\"_blank\" >[=10=]</a>";
echo preg_replace($regexp, $anchorMarkup, $string);