Pereiti prie turinio

URL sutrumpinimas


Rekomenduojami pranešimai

Sveiki,

 

reikėtų f-jos, kuri sutrumpintų ilgus url adresus. Pvz.:

pakeisti į

 

Ta f-ja turėtų tekste rasti url ir iš jo padaryti tokį html kodą:

<a href="http://domain.com/kazkoks-labai-ilgas-labai-labai-ilgas-url-o-cia-jau-galas-kazkos-galas-cia">http://domain.com/ka...kazkos-galas</a>

 

Ačiū už pagalbą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
<?php

$str = 'http://www.delfi.lt/verslas/transportas/sg tekstas tekstas ';

echo format_text($str); // mark hyperlink

function format_text($text) {
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";

if(preg_match($reg_exUrl, $text, $url)) {
	return preg_replace($reg_exUrl, "<a href=".$url[0].">".substr($url[0], 0, 25).'...'.substr($url[0], -15)."</a> ", $text);
} else {
	return $text;
}

}

gal kas nors dar pasitobulins...

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...

Kiek pakeista f-ja, kad susitvarkytų linkai ir be http.

function format_link($text, $restyle = true, $cutLink = true) {
   $reg_exUrl = "/\b(?:((http|ftp|https):\/{2})|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";

if (preg_match($reg_exUrl, $text, $url)) {
	$url = $url[0];

	if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
		$url = "http://" . $url;
	}

	if ($cutLink) {
		if ($restyle) {
			return preg_replace($reg_exUrl, "<a href='".$url."' target='_blank'>".((strlen($url) > 43) ? substr($url, 0, 25).'...'.substr($url, -15) : $url)."</a>", $text);
		} else {
			return preg_replace($reg_exUrl, substr($url, 0, 25).'...', $text);
		}
	} else {
		return preg_replace($reg_exUrl, "<a href='".$url."' target='_blank'>".$url."</a>", $text);
	}
} else {
	return $text;
}
}

 

Kaip padaryti, kad dar ir lietuvišką domeną atpažintų? ta prasme reikia, kad ir pvz. uždarbis.lt pakeistų į aktyvų linką... tik man su ų ir ū nesigauna raidėm. Padėkit, jau trečią valandą kariauju...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

function format_link($text, $restyle = true, $cutLink = true) {
   $idn = new \idna_convert(array('idn_version' => 2008));
   $regex = "/\b(?:((http|ftp|https):\/{2})|www\.)[-a-z0-9ąčęėįšųūĄČĘĖĮŠŲŪ+&@#\/%?=~_|!:,.;]*[-a-z0-9ąčęėįšųūĄČĘĖĮŠŲŪ+&@#\/%=~_|]/i";

if (preg_match($regex, $text, $link)) {
       $url = $link[0];
       $href = $idn->encode($link[0]);

	if (!preg_match("~^(?:f|ht)tps?://~i", $href)) {
           $href = "http://" . $href;
	}

	if ($cutLink) {
		if ($restyle) {
			return preg_replace($regex, "<a href='".$href."' target='_blank'>".((strlen($url) > 43) ? mb_substr($url, 0, 25).'...'.mb_substr($url, -15) : $url)."</a>", $text);
		} else {
			return preg_replace($regex, mb_substr($url, 0, 25).'...', $text);
		}
	} else {
		return preg_replace($reg_exUrl, "<a href='".$href."' target='_blank'>".$url."</a>", $text);
	}
} else {
	return $text;
}
}

Dabar jau tikrai veikia, kaip ir reikėjo...

Naudojamą klasę atsisiųst galit čia: Mano nuoroda

Redagavo Donatis07
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

Regex'ai tavo problemai yra žiauriai žiauriai netinkamas sprendimas...

o ką geriau pasiūlytumėt? :)

 

Visgi dar reikėtų pertvarkyti šiek tiek šią f-ją, kad nebūtų keičiami url src ir href atributuose...

function format_link($text, $restyle = true, $cutLink = true, $length = 25) {
$regex = "/\b(?:((http|ftp|https):\/{2})|www\.)[-a-z0-9ąčęėįšųūĄČĘĖĮŠŲŪ+&@#\/%?=~_|!:,.;]*[-a-z0-9ąčęėįšųūĄČĘĖĮŠŲŪ+&@#\/%?=~_|!:,.;|]/i";

if (preg_match($regex, $text, $link)) {
	$url = '$0';
	$href = encode_idn('$0');

	if (!preg_match("~^(?:!(f|ht)tps?):\/{2}~i", $href)) {
		$href = "http://" . $href;
	}

	if ($cutLink) {
		if ($restyle) {
			return preg_replace($regex, "<a href='".$href."' target='_blank'>".((strlen($url) > (15 + $length + 3)) ? mb_substr($url, 0, $length).'...'.mb_substr($url, -15) : $url)."</a>", $text);
		} else {
			return preg_replace($regex, mb_substr($url, 0, $length).'...', $text);
		}
	} else {
		return preg_replace($regex, "<a href='".$href."' target='_blank'>".$url."</a>", $text);
	}
} else {
	return $text;
}
}

function decode_idn($url) {
$idn = new \idna_convert(array('idn_version' => 2008));
return $idn->decode($url);
}

function encode_idn($url) {
$idn = new \idna_convert(array('idn_version' => 2008));
return $idn->encode($url);
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...