Файл: work/validator/index.php
Строк: 64
<?
require '../../config.php';
$title = 'XML Валидатор';
include '../../style/head.php';
aut();
who_add(0, 'servise');
if (!$_GET['source'])
{
$go = isset($_GET['go']) ? $_GET['go'] : NULL;
switch($go)
{
default:
echo '<form action="?" method="get">
<label>Введите адрес сайта:</label><br/>
<input type="text" name="source" value="http://"/><br/>
<input type="submit" value="Проверить"/>
</form><br/>
<a href="?go=faq">FAQ</a><br/>';
break;
case faq:
echo '
-С помощью данного сервиса вы можете проверить свои страницы на соответствие XML стандартам.<br/>
-WML и xHTML страницы бязательно должны соответствовать стандартам XML. HTML не так требователен, однако лишним такое соответствие не будет.<br/>
« <a href="index.php?">Назад</a>';
break;
}
}
else
{
$source = rawurldecode(trim($_GET['source']));
if (preg_match('/^(http://)+[a-zA-Z_0-9/.&=?-]+$/', $source))
{
function validator($current)
{
global $lng;
$data = @fopen($current,'r');
if (!$data)
{
return 'Не удалось проверить указанный URL<br/>';
}
ini_set('user_agent', $_SERVER['HTTP_USER_AGENT']);
$fl = file_get_contents($current);
$xml_parser = xml_parser_create();
if (!xml_parse($xml_parser, $fl, feof($data)))
{
$err = xml_error_string(xml_get_error_code($xml_parser));
$line = xml_get_current_line_number($xml_parser);
$column = xml_get_current_column_number($xml_parser);
xml_parser_free($xml_parser);
fclose($data);
return 'Error [Line ' . $line . ', Column ' . $column . ']: ' . $err . '<br/>'. code($fl,$line);
}
else
{
xml_parser_free($xml_parser);
return 'Документ Соответствует XML Правилам<br/>' . code($fl, 0);
}
}
function url_highlight($fl)
{
return '<code>' . nl2br(preg_replace("~("|')[^<>]*("|')~iU",'<span style="color:#DD0000">\0</span>', preg_replace("~<!--.*-->~iU",'<span style="color:#FF8000">\0</span>', preg_replace("~(<[^s!]*s)([^<>]*)([/?]?>)~iU",'\1<span style="color:#007700">\2</span>\3', preg_replace("~<[^<>]*>~iU",'<span style="color:#0000BB">\0</span>', htmlspecialchars($fl,ENT_QUOTES)))))).'</code>';
}
function code($fl, $line)
{
if (substr_count($fl, "r") > 2)
{
$arr = split("r", url_highlight(str_replace("n", null, $fl)));
}
else
{
$arr = split("n", url_highlight($fl));
}
$end = sizeof($arr);
for($i = 0; $i < $end; ++$i)
{
if ($i == ($line - 1))
{
$page .= '<span class="fail_code"> ' . ($i + 1) . ' </span> ' . $arr[$i];
}
else
{
$page .= '<span class="true_code">' . ($i + 1) . '</span> ' . $arr[$i];
}
}
return '<br/>' . $page . '<br/>';
}
echo validator($source);
}
else
{
echo 'Введен не верный URL<br/>';
}
}
echo '<br />« <a href="/work/?">В Раздел</a>';
include '../../style/foot.php';
?>