Szokás fórumokon, vendégkönyvekben a beírt url-eket automatikusan felismertetni és átalakítani kattintható linkké. Erre jól használhatók a reguláris kifejezések. Az első példa rövid, de felismeri a linkeket, amik http-vel, https-el, www-el, wap-al kezdődnek. Viszont ha vessző kerül a végére, mert épp egy tagmondat végén van, vagy pont, esetleg felkiáltó jel, akkor az is bekerül a linkbe.
<?php
$szoveg = "Egy szövegben lehet link https-el kezdődve: https://www.google.com/accounts/ServiceLogin?service=mail
vagy csak http-vel. http://rimelek.hu,
www.phpstudio.hu ";
$szoveg = "Egy szövegben lehet link https-el kezdődve: https://www.google.com/accounts/ServiceLogin?service=mail
vagy csak http-vel. http://rimelek.hu,
www.phpstudio.hu ";
$szoveg = preg_replace("#(\s*)((http(s?)://)|(www\.|wap\.))(\S+\.\S+)#is", "\\1<a href=\"http\\4://\\5\\6\" target='_blank'>\\2\\6</a>", $szoveg);
print $szoveg;
?>
A másik megoldás bonyolultabb, de az írásjeles hibát is megoldja:
<?php
function url2link($matches)
{
$i = strlen($matches[0]);
$szoveg = trim($matches[0],',.!');
$j = strlen($szoveg);
return preg_replace("#(\s*)(http(s?)://)?(.*)#is",
"\\1<a href=\"http\\3://\\4\" target='_blank'>\\2\\4</a>",
$szoveg).substr($matches[0],$i-1,$i-$j);
}
function url2link($matches)
{
$i = strlen($matches[0]);
$szoveg = trim($matches[0],',.!');
$j = strlen($szoveg);
return preg_replace("#(\s*)(http(s?)://)?(.*)#is",
"\\1<a href=\"http\\3://\\4\" target='_blank'>\\2\\4</a>",
$szoveg).substr($matches[0],$i-1,$i-$j);
}
$szoveg = preg_replace_callback("#(\s*)((http(s?)://)|(www\.|wap\.))(\S+\.\S+)#is",'url2link',$szoveg);
print $szoveg;
?>
Kategóriák: