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 :: Вытащить информацию из .js файла и поместить в переменную

 PHP.SU

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


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

> Без описания
alerzo
Отправлено: 19 Октября, 2015 - 10:39:32
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Янв. 2014  


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




Здравствуйте! Есть задача в том чтобы вытащить информацию из .js файла и поместить ее в переменую. Вытащить нужно строки, обрамленные кодом..
Содержимое файла .js:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. var url_vhoda = [
  4. 'http://2-ip.ru',
  5. 'http://2-ip.ru',
  6. 'http://2-ip.ru',
  7. 'https://yandex.ru',
  8. 'https://google.ru',
  9. ];
  10.  
  11.  

Нужно вытащить строки:
http://2-ip[dot]ru
http://2-ip[dot]ru
http://2-ip[dot]ru
https://yandex[dot]ru
https://google[dot]ru

С последующим выводом их в textarea, подскажите как реализовать! Понял что нужно сначало положить все данные в переменную а потом парсить регулярным выражением, но как это сделать?
PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = "../ID-S/ID/$id.js";
  3. if (file_exists($dir)) {
  4.     echo "Файл настройки $id найден!<br/> ";
  5.     $filename=file_get_contents($dir);
  6.     echo $filename;
  7. //по идее здесь должен быть сам парсинг файла
  8.  
 
 Top
Faraon-san
Отправлено: 19 Октября, 2015 - 10:56:18
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = "../ID-S/ID/$id.js";
  3. if (file_exists($dir)) {
  4.     echo "Файл настройки $id найден!<br/> ";
  5.     $filename=file_get_contents($dir);
  6.     preg_match_all('/\'([^\']+)\'/', $filename, $matches);
  7.     var_dump($matches[1]);
  8. }
  9.  
 
 Top
alerzo
Отправлено: 19 Октября, 2015 - 11:32:46
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Янв. 2014  


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




[quote=Faraon-san][/quote]
Не подходит регулярное выражение..файл длинный..спарсилось все подряд..нужно ограничиться тем что находится между var url_vhoda = [ и ];
нужные значения находятся в ковычках
 
 Top
Мелкий Супермодератор
Отправлено: 19 Октября, 2015 - 11:55:36
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




А более в общем какая задача?
Нельзя выкинуть разбор кода JS и оставить чистый JSON?

Если этот js хотите редактировать откуда-то с веб-морды, то разберите его на удобные части и при сохранении просто генерируйте новый файлик целиком.


-----
PostgreSQL DBA
 
 Top
alerzo
Отправлено: 19 Октября, 2015 - 12:00:10
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Янв. 2014  


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




В общем - в файле сотни параметров, это уже и есть удобный формат для парсинга..плохо знаком с регулярными выражениями, нужен пример..всего - 3-4 вида разных вариантов данных которые нужно спарсить.
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Октября, 2015 - 12:17:16
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




А вот ты как думаешь, js-движок регулярками код парсит?
 
 Top
Мелкий Супермодератор
Отправлено: 19 Октября, 2015 - 12:17:29
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Раз нужны регулярки - это всегда отвратный формат для парсинга.
Удобный - это файл целиком в JSON. Или ini, или yaml какой, да хоть, прости ктулху, xml. В общем, что угодно, для чего есть нормальный читатель.

Вот вам пример: http://perlmonks[dot]org/?node_id=995856 вот эта здоровая перловая регулярка на 3 экрана и то не умеет юникод. А сам json вычитывать придётся, иначе вы не сможете нормально найти конец объявления этой вашей var url_vhoda.


-----
PostgreSQL DBA
 
 Top
Panoptik
Отправлено: 19 Октября, 2015 - 12:22:20
Post Id



Постоянный участник


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


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




а что если загрузить этот файл в какой-нибудь джс движок типа фантомджс или в ноду и оттуда прямо отдать значения нужных переменных


-----
Just do it
 
 Top
alerzo
Отправлено: 19 Октября, 2015 - 12:31:30
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Янв. 2014  


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




задача конкретная, а не свободная..
1) есть файл с содержимым
2) нужен код на php который его выдернет..
начинается нужный код всегда с "var url_vhoda = ["
заканчивается "];"
нужные значения находятся в ковычках через запятую...
Все..
 
 Top
Panoptik
Отправлено: 19 Октября, 2015 - 14:11:45
Post Id



Постоянный участник


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


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




для пхп >= 5.4

PHP:
скопировать код в буфер обмена
  1. $varDefinition = 'var url_vhoda =';
  2. $posStart = strpos($jsContent, $varDefinition, null) + strlen($varDefinition);
  3. $posEnd = strpos($jsContent, ']', $posStart);
  4. $results = eval('return ' . mb_substr($jsContent, $posStart, $posEnd - $posStart +1, 'UTF-8') . ';');
  5. var_dump($results);


-----
Just do it
 
 Top
DelphinPRO
Отправлено: 19 Октября, 2015 - 17:34:24
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




Panoptik

для пхп >= 5.3

PHP:
скопировать код в буфер обмена
  1. $varDefinition = 'var url_vhoda =';
  2. $posStart = strpos($jsContent, $varDefinition, null) + strlen($varDefinition);
  3. $posEnd = strpos($jsContent, ']', $posStart);
  4. $results = json_decode(mb_substr($jsContent, $posStart, $posEnd - $posStart +1, 'UTF-8'), true);
  5. var_dump($results);


Улыбка Почему эвал-то сразу?


-----
Чем больше узнаю, тем больше я не знаю.
 
 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