PHP и проверка обратных ссылок
Пишу скрипт каталога. В общем уже готов, осталось только систему проверки обратных ссылок сделать.
Короче говоря, думаю не особо заморачиватьсч и проверять на наличие в странице партнёра в html коде моего URL.
Типо так:
$result=0;
$file_array = file("$back_url");//читаем страничку с нашим кодом
if(!$file_array)
{
echo("Ошибка открытия страницы");
}
else
{
for($i=0; $i < count($file_array); $i++)
{
$check = count(explode ($our_url, $file_array));
if ($check>1)
{
$result++;
}
}
}
?>
Таким образом, если переменная $result будет больше 0, то значит на странице наш URL присутствует, а если нет то ID сайта в "баню" :)
Интересно, будет ли этот способ работать с динамическими страницами, или только со статикой? И есть ли ещё какие-либо способы (в инете не нашел)?
$result = substr_count ($content, $our_url);
Нужно проверять стоит ли ссылка в теге <A></A>
А то можно тупо кинуть URL как текст и толку будет ноль зато система покажет что "ссылка" есть.
В общем нужно различать
и
Спасибо, попробую.
RussianSpy,
Наверное в таком случае лучше проверять на наличие всего кода, а не только url?
Эх, жалко что в пхп нет подобия LIKE из мускула...
В PHP есть регулярные выражения. С их помощью можно все это сделать.
Зато есть DOM. Проще говоря, разбираешь и упорядочиваешь весь документ, берёшь все узлы с именем "a" и смотришь, что у них в аттрибуте href написано.
Вот ТУТ я как-то привёл пример, вполне подходящий к данной задаче (при небольшом понимании его. Он был написан для другого. Для тэгов img).
А ещё проще так:
$DOC->loadHTML(file_get_contents("<требуемый URL>"));
foreach($DOC->getElementsByTagName("a") as $Root){
echo "{$Root->getAttribute("href")}\n"; //тут можно не выводить ничего, а проверять
}
Спасибо!
Буду разбираться.
P.S. Так между делом: почему функция ucfirst(); на локалхосте работает, а на сайте нет?
Нужно у хостёра узнать локали, которые они установили и прописать перед работой скриптов функцией setlocale(); Например так: setlocale(LC_ALL, 'ru_RU.cp1251');
Только что нашёл в своих переписках полезный совет своего хостёра: зайти по ssh к себе и выполнить locale -a|grep ru . Это доджно вывести список доступных локалей, установленных у хостёра.
$DOC->loadHTML(file_get_contents("F:\VT0111.HTM"));
foreach($DOC->getElementsByTagName("td") as $Root){
print $Root->nodeValue."<br>\n";
}
Короче говоря, думаю не особо заморачиватьсч и проверять на наличие в странице партнёра в html коде моего URL.
Вообще-то неплохо бы проверить не запрещена ли индексация поисковыми системами. Может быть запрещена индексация страницы или каталога в файле robots.txt, страницы в метатеге "robots" или части страницы с помощью тегов <noindex> (только для Яндекса).
Способы проверки тут уже предложили.
... а все при использовании DOM такой глючный текст получают?как же его вернуть?
... а все при использовании DOM такой глючный текст получают?как же его вернуть?
Когда строишь XML из HTML, DOM указывает кодировку, которая указана в HTML-документе. Частенько кулхацкеры не указывают кодировку, полагаясь на понимание её браузерами. Соответственно, DOM ставит кодировку по умолчанию - латиноамериканскую, кажется iso. Соответственно, в XML получаются такие кабаллистические символы. Если ты знаешь, что в HTML-документе кодировка windows-1251, то создавая DOM-документ, нужно это указывать: $doc = new DOMDocument("1.0", "windows-1251")