Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Автозамена совпадений содержимого в теге из файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
fullzero
Отправлено: 15 Июля, 2013 - 18:03:48
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Всем привет. Есть EN.xml файл а в нём несколько тысяч строк с примерным содержанием <lang name="тут имя" тут могут быть ещё имена><![CDATA[тут английские слова]]></lang>

Есть второй файл xml там те же теги и имена только содержимое тега на русском. Надо пробежаться по файлу EN.xml и заменить на найденные совпадения по name из RU.xml

Тут где то на форуме нашёл небольшой пример но он находит только содержимое тегов а мне надо заменить из EN на RU по совпадающему name=

PHP:
скопировать код в буфер обмена
  1.  
  2. $sData= file_get_contents('en.xml');
  3. preg_match_all('/\<lang [^\>]*\>(.*)\<\/lang\>/Usmi', $sData, $rgMatches);
  4. foreach ($rgMatches[1]  as $value) {
  5. echo "$value\n";
  6. }
  7.  


Надеюсь понятно объяснил Радость и вообще такое реально провернуть?
 
 Top
esterio
Отправлено: 15 Июля, 2013 - 18:11:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




все реально. Только тру программист будет два дня писать код который сделает работу за две минуты, которую можно было вручную сделать за два часа.

А по факту. здесь много чего найдете для себя
http://forum.php.su/topic.php?fo...&topic=11178
 
 Top
fullzero
Отправлено: 15 Июля, 2013 - 18:51:01
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




esterio пишет:
А по факту. здесь много чего найдете для себя
http://forum.php.su/topic.php?forum=71&topic=11178


То что по ссылке мне не очень подходит. Не важно какого формата файл. Файл на русском может быть и в txt. Вроде бы всё так просто но на деле сложновато выходит.

Щас что нить попробую
 
 Top
VenZell
Отправлено: 15 Июля, 2013 - 19:25:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




fullzero, вы бы образец обоих файлов приложили для наглядности...
 
 Top
EuGen Администратор
Отправлено: 15 Июля, 2013 - 19:33:59
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sRUFile        = 'RU.xml';
  2. $sENFile        = 'EN.xml';
  3. $bFound         = preg_match_all('/\<lang\s+.*name\="([^"]*)".*\>(.*)\<\/lang\>/Usmi', file_get_contents($sRUFile), $rgRUMatches);
  4. $rgRUMatches    = array_combine($rgRUMatches[1], $rgRUMatches[2]);
  5. file_put_contents($sENFile, preg_replace_callback('/\<lang(\s+.*)name\="([^"]*)"(.*)\>(.*)\<\/lang\>/Usmi', function($rgENMatches) use (&$rgRUMatches)
  6. {
  7.         return '<lang'.$rgENMatches[1].'name="'.$rgENMatches[2].'"'.$rgENMatches[3].'>'.$rgRUMatches[$rgENMatches[2]].'</lang>';
  8. }, file_get_contents($sENFile));

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
fullzero
Отправлено: 17 Июля, 2013 - 14:39:34
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




EuGen спасибо, все работает Улыбка

Исправил только одну строчку, скобочки не хватало Улыбка
 
 Top
EuGen Администратор
Отправлено: 17 Июля, 2013 - 14:43:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Всё-таки мозг уступает интерпретатору, когда код пишется в веб-форме. Прошу извинить.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB