Подстановка ссылок в текст в процентном соотношении.

Накидал вот простенькую функцию, которая запихивает в текст ссылки. Т.е. берется текстовый файл и туда пихаются ссылочки с плотностью, например, 7%.  Функция простенькая, писал себе под один проект. Наверно, весь функционал редбаттона по отдельности скоро напишу, надо свой дорген замутить.

Переменные вызова:
$text, сам текст в который пихаются ссылки. string
$prc, int, процент плотности ссылок.
$links, array, массив со ссылками вида http://site.ru
$nobr, bool, 1 или 0. Если, например, текста 500кб а ссылок 3, указывает, обрубать ли текст после последней ссылки(1) или оставить все 500кб с 3 ссылками.

Листинг:

function AddLinksToText($text, $prc, $links, $nobr){
	$pos = 0;
	$string = "";
	$totalLinks = count($links); 
	$Words = explode(" ", $text); 
	$totalWords = count($Words);
	$needText = $totalLinks * $prc;

	if($totalWords < $needText){
			$prc = floor($totalWords / $totalLinks); //calculate recommended percentage if haven't enough text
			echo @date("r")." not enough text, decrease density to ".$prc."%\r\n";
			$needText = $totalLinks * $prc;
		} else {
			echo @date("r")." working with text, density is ".$prc."%\r\n";
		}
	foreach($links as $num=>$lnk){
					$pos += $prc;
					$Words[$pos] = "<a href=\"".$lnk."\">".$Words[$pos]."</a>";
				}
	if(!isset($nobr)){				
		$tmp = array_slice($Words, 0, $needText + 3);	
		} else {
		$tmp = $Words;
		}

	//return string
	foreach($tmp as $somevar){
		$string .= $somevar." "; 
	}
	return $string;	

}
0.00 avg. rating (0% score) - 0 votes

9 комментариев

  • Реализация интересная… для ссылок с рэндомным анкором, что снижает ценность функции для целей SEO.
    Однако гораздо интереснее была бы функция, имеющая на входе массив вида «анкор»->»линк»: ищем все полные совпадения и проставляем соответствующие линки. Тут можно поиграться со словоформами и включать/не включать в список найденную словоформу. Например при анкоре «ГОРОД» функция может  ставить ссылку на найденное слово «приГОРОД» — естественно, на слово целиком, а не только на найденный анкор внутри слова 🙂 Идеально, если бы функция отдавала бы приоритет только для полного вхождения, а при отсутствии оного — уже искала бы словоформы (тут нужны ограничения видимо по степени морфологии — в прямом смысле, очень сильно видоизмененные словоформы я бы игнорировал, по степени отличия от оригинала, что ли — «междуГОРОДние» пожалуй можно было бы исключить)

  • Спасибо, пригодтся.
    +1 фичареквесту от kikaha: anchor-link массив на входе, чтобы проставлять линки более-менее осмысленно. А вобще, тут можно много напридумывать, например подключить базу синонимов и т.д. Каждый, при желании, может «заточить» ф-цию под себя.

    • kikaha, Хитрый Админ замена ссылок в тексте аля википедия конечно рулит, но автоматом все равно не сделать чтоб нормально было. Эту функцию писал с одной целью — планирую кормить листы ссылок яндексу, там цель чтоб ссылку скормить а не чтоб читать..

  • Соглашусь с kikaha гораздо лучше было бы с анкорами, но фича удобная, нужно попробовать!

  • Ну, если на скармливание, то норм прога. Хорошо хоть кто-то что-то пишет.

  • Последнее время отчаянно завидую программистам. Наверное, всё-таки надо было в своё время пойти учиться именно на эту специальность. Думаю, прога нужная, пригодится.

  • А если ссылки с одного сайта, но с разных страниц, то может ли робот воспринять их как спам (при нормальной плотности выше нормальной)?

  • да, в редбаттоне такое присутствует! создайте бесплатный редбаттон!!!

css.php