Отвечу на вопросы по php/mysql/html/css/js

C
На сайте с 04.02.2005
Offline
291
#31

Ну а че? И спросить нельзя?

Но по идее ее конечно можно задействовать, если, например, поставить ограничение на количество вхождений

---------- Добавлено 11.01.2013 в 14:50 ----------

более сложная функция сравнения,

Да-да, а туда можно засунуть все что угодно, вплоть до поиска синонимов.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#32
Chukcha:
Да-да, а туда можно засунуть все что угодно, вплоть до поиска синонимов.

Ну да, в простейшем случае можно использовать стеммер портера для выделения корней слов и сравнивать их.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
izbushka
На сайте с 08.06.2007
Offline
110
#33
Оптимизайка:
да, в простейшем случае можно использовать стеммер портера для выделения корней слов и сравнивать их.

Ага, тут есть класс на php

TF-Studio
На сайте с 17.08.2010
Offline
334
#34

Подскажите правильную функцию определения всех внутренних ссылок, с учетом абсолютных, относительных, якорных (якоря вырезать)

на входе передается ($text, $domain)

на выходе массив (полных адресов) всех внутренних.

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
Оптимизайка
На сайте с 11.03.2012
Offline
396
#35
izbushka:
Ага, тут есть класс на php

Вот, используя этот класс:


<?php

class Lingua_Stem_Ru {
private $VOWEL = '/аеиоуыэюя/u';
private $PERFECTIVEGROUND = '/((ив|ивши|ившись|ыв|ывши|ывшись)|((?<=[ая])(в|вши|вшись)))$/u';
private $REFLEXIVE = '/(с[яь])$/u';
private $ADJECTIVE = '/(ее|ие|ые|ое|ими|ыми|ей|ий|ый|ой|ем|им|ым|ом|его|ого|еых|ую|юю|ая|яя|ою|ею)$/u';
private $PARTICIPLE = '/((ивш|ывш|ующ)|((?<=[ая])(ем|нн|вш|ющ|щ)))$/u';
private $VERB = '/((ила|ыла|ена|ейте|уйте|ите|или|ыли|ей|уй|ил|ыл|им|ым|ены|ить|ыть|ишь|ую|ю)|((?<=[ая])(ла|на|ете|йте|ли|й|л|ем|н|ло|но|ет|ют|ны|ть|ешь|нно)))$/u';
private $NOUN = '/(о|а|ев|ов|ие|ье|е|иями|ями|ами|еи|ии|и|ией|ей|ой|ий|й|и|ы|ь|ию|ью|ю|ия|ья|я)$/u';
private $RVRE = '/^(.*?[аеиоуыэюя])(.*)$/u';

private function s(&$s, $re, $to) {
$orig = $s;
$s = preg_replace($re, $to, $s);
return $orig !== $s;
}

private function m($s, $re) {
return preg_match($re, $s);
}

public function stem_word($word) {
mb_regex_encoding( 'UTF-8' );
mb_internal_encoding( 'UTF-8' );
$word = mb_strtolower($word);
$word= str_ireplace('ё', 'е', $word);
$stem = $word;
do {
if (!preg_match($this->RVRE, $word, $p)) break;
$start = $p[1];
$RV = $p[2];
if (!$RV) break;

if (!$this->s($RV, $this->PERFECTIVEGROUND, '')) {
$this->s($RV, $this->REFLEXIVE, '');

if ($this->s($RV, $this->ADJECTIVE, '')) {
$this->s($RV, $this->PARTICIPLE, '');
} else {
if (!$this->s($RV, $this->VERB, ''))
$this->s($RV, $this->NOUN, '');
}
}

$this->s($RV, '/и$/', '');

if (!$this->s($RV, '/ь$/', '')) {
$this->s($RV, '/ейше?/', '');
$this->s($RV, '/нн$/', 'н');
}

$stem = $start.$RV;
} while(false);
return $stem;
}
}


/**** ТОЖЕ САМОЕ НО СРАВНИВАЯ КОРНИ СЛОВ *****/

$s = new Lingua_Stem_Ru();

$tags = array($s->stem_word('разные'), $s->stem_word('ключевые'), $s->stem_word('слова'));
$source = 'Это текст содержащий ключевое слово а также без ключевого слова разного с совсем разными словами';

$buf = null;
foreach(explode(' ', $source) as $token) {
if (in_array($s->stem_word($token), $tags)) {
$buf .= $token . ' ';
} else {
if ($buf) {
echo '<b>' . trim($buf) . '</b> ';
}
$buf = null;
echo $token . ' ';
}
}
if ($buf) {
echo '<b>' . trim($buf) . '</b>';
}

Результат:

Это текст содержащий <b>ключевое слово</b> а также без <b>ключевого слова разного</b> с совсем <b>разными словами</b>
systemiv
На сайте с 05.07.2012
Offline
60
#36
TF-Studio:
Подскажите правильную функцию определения всех внутренних ссылок, с учетом абсолютных, относительных, якорных (якоря вырезать)
на входе передается ($text, $domain)
на выходе массив (полных адресов) всех внутренних.

На вход поступает текст в каком формате? plain или html? Если можно пример

TF-Studio
На сайте с 17.08.2010
Offline
334
#37

На входе текст страницы (curl'ом загружен)

Также 3 аргумент скорее нужен (текущая страница, для относительных ссылок)

systemiv
На сайте с 05.07.2012
Offline
60
#38
TF-Studio:
На входе текст страницы (curl'ом загружен)
Также 3 аргумент скорее нужен (текущая страница, для относительных ссылок)

Тогда можно вытаскивать обычной регуляркой /<a.*?href="(.*?)".*?<\/a>/si, это вытащит все ссылки на странице. В дальнейшем их можно прогнать через несколько условий, и определить какая перед вами ссылка(относительная или абсолютная). Для относительной через конкотенацию добавить адрес.

TF-Studio
На сайте с 17.08.2010
Offline
334
#39
/<a[^<>]*href=['|\"](.*)['|\"][^<>]*>(.*)<\/a>/iU

у меня такая регулярка.

(preg_match("/http:\/\/(www\.){0,1}".$domain."/i", $v)

Так мы определяем, что ссылка не внешняя

Работает более четко.

Но я просил всю функцию (

Оптимизайка
На сайте с 11.03.2012
Offline
396
#40
TF-Studio:
Так мы определяем, что ссылка не внешняя

А как насчёт этой внешней ссылки ;) <a href="//www.domain.ru">

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий