X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите скрипт дописать PHP
Чеснок
Чеснок
Topic Starter сообщение 12.1.2012, 8:38; Ответить: Чеснок
Сообщение #1


В общем суть работы скрипта:
Есть файл импорта в wordpress xml. Но в нём все теги не правильно пишутся ярлыки:
<category domain="post_tag" nicename="%D1%83%D0%BC%D0%B1%D0%B5%D1%80%D1%82%D0%BE"><![CDATA[Умберто]]></category>

а нужно
<category domain="post_tag" nicename="umberto"><![CDATA[Умберто]]></category>

Путём тягостных раздумий получается вот такая полностью рабочая система:
<?php
$iso = array(
   "Є"=>"ye","І"=>"i","Ѓ"=>"g","і"=>"i","№"=>"#","є"=>"ye","ѓ"=>"g",
   "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d",
   "Е"=>"e","Ё"=>"yo","Ж"=>"zh",
   "З"=>"z","И"=>"i","Й"=>"j","К"=>"k","Л"=>"l",
   "М"=>"m","Н"=>"n","О"=>"o","П"=>"p","Р"=>"r",
   "С"=>"s","Т"=>"t","У"=>"u","Ф"=>"f","Х"=>"x",
   "Ц"=>"c","Ч"=>"ch","Ш"=>"sh","Щ"=>"shh","Ъ"=>"",
   "Ы"=>"y","Ь"=>"","Э"=>"e","Ю"=>"yu","Я"=>"ya",
   "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
   "е"=>"e","ё"=>"yo","ж"=>"zh",
   "з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
   "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
   "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
   "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
   "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya","«"=>"","»"=>"","—"=>"-"
  );                                                             //Табличка транслита, взята из WP-плагина cyr-to-lat

$xml = simplexml_load_file('import.xml');            //Загружаем файл
for($i=0;$i<count($xml->channel->item);$i++)        //Перебор всех элементов
{
$title=$xml->channel->item[$i]->category[1];        //Вытаскиваем кирилличный текст типа "<![CDATA[Хрень]]>"
    if($title!='')                                         //Для непустых
    {
    $new = strtr($title,$iso);                            //Транслитерируем Хрень в hren
    $xml->channel->item[$i]->category[1]->attributes()->nicename = $new;
                                                                //Заменяем
    }

}
$xml->asXML('import_encoded.xml');                    //Сохраняем
?>


Беда только в том, что не хочет он следующий тег этой же записи обрабатывать, если у записи несколько тегов, то транслитерирует только первую. Хелпните мну post-2472-1287325497.gif


--------------------
Забанен за мошенничество
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sngrl
sngrl
сообщение 12.1.2012, 8:52; Ответить: sngrl
Сообщение #2


Зачем гемор с разбором xml? Ведь можно его просто открыть как обычный текстовый файл и произвести замену:

$iso = array(.........); # твой массив
$in = file_get_contents('import.xml'); #загружаем весь файл
$out = strtr($in, $iso); # производим замену
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Чеснок
Чеснок
Topic Starter сообщение 12.1.2012, 10:32; Ответить: Чеснок
Сообщение #3


Спасибо неизвестному кодеру, стукнувшему мне в аську))
Развернуть/Свернуть

<?php
$iso = array(
   "Є"=>"ye","І"=>"i","Ѓ"=>"g","і"=>"i","№"=>"#","є"=>"ye","ѓ"=>"g",
   "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d",
   "Е"=>"e","Ё"=>"yo","Ж"=>"zh",
   "З"=>"z","И"=>"i","Й"=>"j","К"=>"k","Л"=>"l",
   "М"=>"m","Н"=>"n","О"=>"o","П"=>"p","Р"=>"r",
   "С"=>"s","Т"=>"t","У"=>"u","Ф"=>"f","Х"=>"x",
   "Ц"=>"c","Ч"=>"ch","Ш"=>"sh","Щ"=>"shh","Ъ"=>"",
   "Ы"=>"y","Ь"=>"","Э"=>"e","Ю"=>"yu","Я"=>"ya",
   "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
   "е"=>"e","ё"=>"yo","ж"=>"zh",
   "з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
   "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
   "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
   "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
   "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya","«"=>"","»"=>"","—"=>"-"
  );      //Табличка транслита, взята из WP-плагина cyr-to-lat

$xml = simplexml_load_file('import.xml');            //Загружаем файл
for($i=0,$countItem=count($xml->channel->item);$i<$countItem;$i++)        //Перебор всех элементов
{
    for($j=0,$countCategory=count($xml->channel->item[$i]->category);$j<$countCategory;$j++)
    {
        $title=$xml->channel->item[$i]->category[$j];        //Вытаскиваем кирилличный текст типа "<![CDATA[Хрень]]>"
        if($title!='')                                         //Для непустых
        {
            $new = strtr($title,$iso);                            //Транслитерируем Хрень в hren
            $xml->channel->item[$i]->category[$j]->attributes()->nicename = $new;    //Заменяем
        }
    }
}
$xml->asXML('import_encoded.xml');                    //Сохраняем
?>

Данным скриптом, вы можете обрабатывать файлы импорта в wordpress, которые создаются программой content downloader, если на вашем сайте используется ЧПУ вида /%postmane.html и плагин rus-to-lat

Сообщение отредактировал Чеснок - 12.1.2012, 10:38


--------------------
Забанен за мошенничество
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 12.1.2012, 10:48; Ответить: webpavilion
Сообщение #4


к чему так усложнять то?

<?php
function trans($matches) {
  $iso = array(
      "Є" => "ye", "І" => "i", "Ѓ" => "g", "і" => "i", "№" => "#", "є" => "ye", "ѓ" => "g",
      "А" => "a", "Б" => "b", "В" => "v", "Г" => "g", "Д" => "d",
      "Е" => "e", "Ё" => "yo", "Ж" => "zh",
      "З" => "z", "И" => "i", "Й" => "j", "К" => "k", "Л" => "l",
      "М" => "m", "Н" => "n", "О" => "o", "П" => "p", "Р" => "r",
      "С" => "s", "Т" => "t", "У" => "u", "Ф" => "f", "Х" => "x",
      "Ц" => "c", "Ч" => "ch", "Ш" => "sh", "Щ" => "shh", "Ъ" => "",
      "Ы" => "y", "Ь" => "", "Э" => "e", "Ю" => "yu", "Я" => "ya",
      "а" => "a", "б" => "b", "в" => "v", "г" => "g", "д" => "d",
      "е" => "e", "ё" => "yo", "ж" => "zh",
      "з" => "z", "и" => "i", "й" => "j", "к" => "k", "л" => "l",
      "м" => "m", "н" => "n", "о" => "o", "п" => "p", "р" => "r",
      "с" => "s", "т" => "t", "у" => "u", "ф" => "f", "х" => "x",
      "ц" => "c", "ч" => "ch", "ш" => "sh", "щ" => "shh", "ъ" => "",
      "ы" => "y", "ь" => "", "э" => "e", "ю" => "yu", "я" => "ya", "«" => "", "»" => "", "—" => "-"
  );

  $key = array_keys($iso);
  $val = array_values($iso);

  return str_replace($key, $val, $matches[0]);
}


//$path = "~/temp-php/temp.txt";
//$str = file_get_contents($path);

$str = '<category domain="post_tag" nicename="Умберто"><![CDATA[Умберто]]></category>';

$ptn = '/(?<=nicename=").*(?=")/U';
$str = preg_replace_callback($ptn, 'trans', $str);

print_r($str);
?>


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Чеснок
Чеснок
Topic Starter сообщение 12.1.2012, 11:09; Ответить: Чеснок
Сообщение #5


Это для полного удаления значений?

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Забанен за мошенничество
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 725 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3400 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1242 24.11.2023, 14:46
автор: alexey
Открытая тема (нет новых ответов) Скрипт поисковика видео StrongTube
3 3josoft 1574 14.8.2023, 14:45
автор: 3josoft
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44908 19.7.2023, 10:03
автор: qpPeW


 



RSS Текстовая версия Сейчас: 20.4.2024, 0:55
Дизайн