Просидел всю ночь над этой функцией, и ВОТ оно ... вроде как все работает, но нет. Опять глюк, на жтот раз, уже с числами. Получилось что функция вытаскивает все как надо а на числах заваливается. Повторно считывает кусок кода.
Материал для раздумий.
1. Есть такой код.
[name]
<meta name='title' content='какое-то описание'>
<meta name='keywords' content='ключевые слова'>
<meta name='description' content='описание сайта'>
<meta name='author' content='http://www.[home]'>
<meta name='ask' content='Дорогие Пауки и Модераторы каталогов! Присылайте сюда побольше посетителей, пожалуйста! Это самый лучший сайт о ...'>
<meta name='document-state' content='dynamic'>
<meta name='revisit-after' content='3 days'> // валится тут
<meta name='robots' content='index,all'>
<meta name='url' content='http://www.[home]'>
[:name:]
[http-equiv]
<meta http-equiv='subject' content='какое-то описание'>
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='content-type' content='text/html; charset=windows-1251 '> // валится тут
<meta http-equiv='reply-to' content='info@[home]'>
[:http-equiv:]
[content]
<meta content='webmaster' name='htttp://www.site.ru'>
[:content:]
// Даже чуть с псувдокодом
2. Надо получить двумерный массив.
Ключевой параметр(какой именно) => массив параметр =значение>
Написал такой код (зацените и осудите) и вроде как все работает, но если нет чисел.
function meta_parser ( $meta )
{
global $arr_meta;
// ключевые тэги ( пары ключ = параметр )
$tags [ "name" ] = "content";
$tags [ "http-equiv" ] = "content";
$tags [ "content" ] = "name";
// выборка нужных данных из шаблона
while ( $param = each( $tags ) )
{
// обработка псевдокода с ключевым параметром $tags [ "key" ]
preg_match_all ( "/(?<=\[".$param [ key ]."\])([\D]+)(?=\[:".$param [ key ].":\])/", $meta, $matches );
foreach ( $matches[0] as $item )
{
$name_txt = $item."<br>";
}
// получение ключа тэга
preg_match_all ( "/(?<=".$param [ key ]."=')([\S]+)(?=' )/", $name_txt, $matches );
$i = 0;
foreach ( $matches[0] as $item )
{
$key[$i] = $item;
$i++;
}
// получение значения тэга
//??(БОЛЬНОЕ МЕСТО <- Лечить)??
preg_match_all ( "/(?<=".$param [ value ]."=')([\S ]+)(?='>)/", $name_txt, $matches );
$i = 0;
foreach ( $matches[0] as $item )
{
// сбор асоциативного массива тэгов парой ключ = значение
$name[ $key[$i] ] = $item;
$key[$i]." = ".$item."<br>";
$i++;
}
// двумерный массив параметр = массив тэгов
$arr_meta [ $param [ key ] ] = $name;
$name = array();
$k++;
}
// модуль чисто формирующий список для проверки верности на глаз
while ( $element = each( $arr_meta ) )
{
print $element[ "key" ]." = <br>";
while ( $el = each( $element[ "value" ] ) )
{
print $el[ "key" ]." = ".$el[ "value" ]."<br>";
}
}
}
Подскажите кто может! А код кому-нить и самому пригодится.
