plain2click()

26
Nov
1

Nav ko te gari rakstīt. Nereti lietotāja ievadītajā tekstā nākas meklēt URL saites un pārtaisīt tās klikšķināmas. Lūk, strādājošs risinājums. Funkcija (otra tikai palīdz pirmajai :) ), kas tekstā sameklēs linkus un attiecīgi tos pārveidos par klikojamām saitēm vai e-pasta saitēm. Ja klikojamā saite būs links uz Youtube video, tad tā saite tiks pārvērsta par embed’u.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function plain2click($str){
	$str = preg_replace_callback("/(http(s)?\:\/\/|www\.)[a-z0-9\-\.]+\.[a-z]{2,4}(\/[a-z0-9\-\?=_&\+%#@\.\/]*)?/i", 'plain2clickCallback', $str);
	$str = preg_replace("/[a-z0-9\-\._]+@[a-z0-9\-\.]+\.[a-z]{2,4}/i", '<a href="mailto:$0">$0</a>', $str);
	return $str;
}
 
function plain2clickCallback($matches){
	$ymatches = array();
	if(preg_match("/http\:\/\/www\.youtube\.com\/watch\?v=([a-z0-9\-_]+)(&feature=[a-z]+)?/i", $matches[0], $ymatches)){
		return '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'.$ymatches[1].'&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'.$ymatches[1].'&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>';
	}
	$url = str_replace(array('http://', 'https://'), '', $matches[0]);
	return '<a rel="nofollow" href="http'.$matches[2].'://'.$url.'" onclick="window.open(this.href); return false;">'.$matches[0].'</a>';
}

Ja kaut kas nestrādā vai strādā nepareizi, tad padod ziņu komentāros, man gan līdz šim viss bijis ok.

Filed under: PHP, datubāzes
1 Comment

1 Comment

  1. janis
    01:03 on February 23rd, 2010

    un kā ar IP adresēm kā linkiem?

    http://127.0.0.1/ – ? :)

Leave a comment

RSS barotne komentāriem pie šī raksta