[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка орфографии по XML
asdf27
Доброго времени, форум. Может кто знает, Яндекс предоставляет возможность проверять текст на предмет ошибок по xml? Делаю поиск по сайту и перед выдачей хотелось бы чекнуть его. Объем - одно слово.
asdf27
Вот ссылка на API http://api.yandex.ru/speller/doc/dg/reference/checkText.xml

Как сделаю, выложу код. Может кто кинет ссылку на толковую статью по разбору XML? Мне, например, надо вытащить значения из word и s
<SpellResult>
<error
code="1" pos="0" row="0" col="0" len="6">
<word>

сабака
</word>
<s>

собака
</s>
</error>
</SpellResult>


Может кто расщедрится и напишет код разбора?
asdf27
Фрагмент вывода результатов поиска
$q=mysql_real_escape_string($_GET[q]); // текст запроса
$q = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $q);
$words = explode(" ", $q); // ищем только первое слово
if (count($words)>1) {$q=$words[0]; echo 'Пока поиск ведется по одному (первому слову), потому остальное отрезано. ';}
$check=urlencode($q); // преобразуем слово для xml-запроса
require_once 'cls/spell.php'; // там разбор xml
$q=mb_strtolower($q); //в нижний регистр


Файлик cls/spell.php, взят из примера

<?php

$filename='http://speller.yandex.net/services/spellservice/checkText?text='.$check;

// читаем файл

$html=@file_get_contents($filename);

$dom = new DOMDocument('1.0', 'UTF-8');

@$dom->loadXML($html);

//if(!$dom) { }

$root=$dom->documentElement;

$nodelist=$root->childNodes; //список узлов 1-го уровня

foreach ($nodelist as $child) {

if ($child->nodeType==XML_ELEMENT_NODE){

$loc=$lastmod=false;

foreach ($child->childNodes as $child2)

if ($child2->nodeType==XML_ELEMENT_NODE){

if ($child2->nodeName=='word')$loc=$child2->nodeValue;

elseif ($child2->nodeName=='s')$lastmod=$child2;

}

if(!$loc || !$lastmod)continue;
if ($loc!=$lastmod->nodeValue) {
$q=$lastmod->nodeValue;
}


//$root->removeChild($child); // удалить страницу из sitemap

}

}


?>


Не за что :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.