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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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