Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ИЗ javascript в PHP 
:(
    Опции темы
abalich
Дата 9.1.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



Есть JS код
Код

reports=Array(0,Array("International. Club Friendlies",Array(108,0,9,"18:00","Аусбург","Бавария","?:?",""),Array(108,0,9,"18:00","Галатасарай","Брюгге","?:?","")),Array("Англия. Кубок Лиги",Array(108,0,9,"19:45","Арсенал","Тоттенхэм","?:?","")),Array("Испания. Кубок Дель Рей",Array(108,0,9,"19:00","Атлетик Б.","Эспаньол","?:?",""),Array(108,0,9,"19:00","Хетафе","Леванте","?:?",""),Array(108,0,9,"19:00","Бетис","Валенсия","?:?",""),Array(108,0,9,"19:00","Рекреативо","Вилльярреал","?:?",""),Array(108,0,9,"19:00","Сарагоса","Расинг","?:?",""),Array(108,0,9,"21:00","Севилья","Барселона","?:?","")),Array("Португалия. Кубок Лиги",Array(108,0,9,"19:30","Бейра Мар","Пенафьель","?:?",""),Array(108,0,9,"21:15","Сетубал","Спортинг","?:?","")),Array("Греция. Кубок Греции",Array(108,0,9,"54'","Агротикос","ОФИ","0:0",""),Array(108,0,9,"54'","Thrasyvoulos","PAS Preveza","1:0","default/greece_cup/231662"),Array(108,0,9,"15:45","Ethnikos Katerini","Арис","?:?",""),Array(108,0,9,"18:00","Ксанти","АЕК","?:?","")),Array("Турция. Turkiye Kupasi Group B",Array(108,0,9,"FT","Kirikkalespor","Генчлербирлиги","0:4","default/turkey_cup_b/228586"),Array(108,0,9,"18:00","Демирспор","Трабзонспор","?:?","")),Array("Турция. Turkiye Kupasi Group C",Array(108,0,9,"FT","Sanliurfaspor","Кайзериспор","1:1","default/turkey_cup_c/228594")),Array("Турция. Turkiye Kupasi Group D",Array(108,0,9,"FT","Sariyer","Бурсаспор","3:2","default/turkey_cup_d/228602"),Array(108,0,9,"12'","Genclerbirligi OFTAS","Денизлиспор","0:0","")),Array("Кипр. Cup (Group A)",Array(108,0,9,"18:00","Apollon Limassol","Этникос Ашнас","?:?",""),Array(108,0,9,"18:30","Омония","Nea Salamis","?:?","")),Array("Марокко. GNFE-1",Array(108,0,9,"14:30","FUS Rabat","RCA Casablanca","?:?",""),Array(108,0,9,"14:30","WAC Casablanca","KACM Marrakech","?:?","")));


Парюсь. Уже неделю. 
1)Как вынуть оттуда Массивы при помощи регулярок. Причем каждый раз в аваскрипте их будет разное кол-во.
2) или же можно из этого сделать PHP массив без регулярок?



--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
Golda
Дата 10.1.2008, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 1
Всего: 42



Вам нужны какие-нибудь вариации на тему JSON


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
abalich
Дата 10.1.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



Golda, 
Цитата

Вам нужны какие-нибудь вариации на тему JSON 

Поясни че ты имела виду.

Это сообщение отредактировал(а) abalich - 10.1.2008, 11:59


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
sTa1kEr
Дата 11.1.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 5
Всего: 146



abalich, про JSON можите прочитать на официальном сайте http://json.org/json-ru.html
Передать весь масcив при помощи JSON-а можно очень просто. Приведу пример как это сделать при помощи библиотеки из PHP 5.2
Код

<html>
<head>
<script type="text/javascript">
var reports=Array(0,Array("International. Club Friendlies",Array(108,0,9,"18:00","Аусбург","Бавария","?:?",""),Array(108,0,9,"18:00","Галатасарай","Брюгге","?:?","")),Array("Англия. Кубок Лиги",Array(108,0,9,"19:45","Арсенал","Тоттенхэм","?:?","")),Array("Испания. Кубок Дель Рей",Array(108,0,9,"19:00","Атлетик Б.","Эспаньол","?:?",""),Array(108,0,9,"19:00","Хетафе","Леванте","?:?",""),Array(108,0,9,"19:00","Бетис","Валенсия","?:?",""),Array(108,0,9,"19:00","Рекреативо","Вилльярреал","?:?",""),Array(108,0,9,"19:00","Сарагоса","Расинг","?:?",""),Array(108,0,9,"21:00","Севилья","Барселона","?:?","")),Array("Португалия. Кубок Лиги",Array(108,0,9,"19:30","Бейра Мар","Пенафьель","?:?",""),Array(108,0,9,"21:15","Сетубал","Спортинг","?:?","")),Array("Греция. Кубок Греции",Array(108,0,9,"54'","Агротикос","ОФИ","0:0",""),Array(108,0,9,"54'","Thrasyvoulos","PAS Preveza","1:0","default/greece_cup/231662"),Array(108,0,9,"15:45","Ethnikos Katerini","Арис","?:?",""),Array(108,0,9,"18:00","Ксанти","АЕК","?:?","")),Array("Турция. Turkiye Kupasi Group B",Array(108,0,9,"FT","Kirikkalespor","Генчлербирлиги","0:4","default/turkey_cup_b/228586"),Array(108,0,9,"18:00","Демирспор","Трабзонспор","?:?","")),Array("Турция. Turkiye Kupasi Group C",Array(108,0,9,"FT","Sanliurfaspor","Кайзериспор","1:1","default/turkey_cup_c/228594")),Array("Турция. Turkiye Kupasi Group D",Array(108,0,9,"FT","Sariyer","Бурсаспор","3:2","default/turkey_cup_d/228602"),Array(108,0,9,"12'","Genclerbirligi OFTAS","Денизлиспор","0:0","")),Array("Кипр. Cup (Group A)",Array(108,0,9,"18:00","Apollon Limassol","Этникос Ашнас","?:?",""),Array(108,0,9,"18:30","Омония","Nea Salamis","?:?","")),Array("Марокко. GNFE-1",Array(108,0,9,"14:30","FUS Rabat","RCA Casablanca","?:?",""),Array(108,0,9,"14:30","WAC Casablanca","KACM Marrakech","?:?","")));

function test()
{
   document.getElementById("test_json").value = reports.toSource();
}
</script>
</head>
<body onload="test();">
<form method="post">
<input type="submit" name="submit" value="Test">
<input type="hidden" id="test_json" name="test_json">
</form>
<?php
if (isset($_POST["test_json"]))
{
    echo "<pre>";
    var_dump(json_decode($_POST["test_json"]));
    echo "</pre>";
}
?>
</body>
</html>


PM MAIL   Вверх
FractalizeR
Дата 11.1.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: нет
Всего: 4



Обратите внимание, что синтаксис Яваскрипт при работе с массивами почти такой же, как и синтаксис PHP. Можно просто заменить все Array на array, а затем сделать eval выражения:

Код

<?php
$textToParse = 'reports=Array(0,Array("International. Club Friendlies",Array(108,0,9,"18:00","Аусбург","Бавария","?:?",""),Array(108,0,9,"18:00","Галатасарай","Брюгге","?:?","")),Array("Англия. Кубок Лиги",Array(108,0,9,"19:45","Арсенал","Тоттенхэм","?:?","")),Array("Испания. Кубок Дель Рей",Array(108,0,9,"19:00","Атлетик Б.","Эспаньол","?:?",""),Array(108,0,9,"19:00","Хетафе","Леванте","?:?",""),Array(108,0,9,"19:00","Бетис","Валенсия","?:?",""),Array(108,0,9,"19:00","Рекреативо","Вилльярреал","?:?",""),Array(108,0,9,"19:00","Сарагоса","Расинг","?:?",""),Array(108,0,9,"21:00","Севилья","Барселона","?:?","")),Array("Португалия. Кубок Лиги",Array(108,0,9,"19:30","Бейра Мар","Пенафьель","?:?",""),Array(108,0,9,"21:15","Сетубал","Спортинг","?:?","")),Array("Греция. Кубок Греции",Array(108,0,9,"54\'","Агротикос","ОФИ","0:0",""),Array(108,0,9,"54\'","Thrasyvoulos","PAS Preveza","1:0","default/greece_cup/231662"),Array(108,0,9,"15:45","Ethnikos Katerini","Арис","?:?",""),Array(108,0,9,"18:00","Ксанти","АЕК","?:?","")),Array("Турция. Turkiye Kupasi Group B",Array(108,0,9,"FT","Kirikkalespor","Генчлербирлиги","0:4","default/turkey_cup_b/228586"),Array(108,0,9,"18:00","Демирспор","Трабзонспор","?:?","")),Array("Турция. Turkiye Kupasi Group C",Array(108,0,9,"FT","Sanliurfaspor","Кайзериспор","1:1","default/turkey_cup_c/228594")),Array("Турция. Turkiye Kupasi Group D",Array(108,0,9,"FT","Sariyer","Бурсаспор","3:2","default/turkey_cup_d/228602"),Array(108,0,9,"12\'","Genclerbirligi OFTAS","Денизлиспор","0:0","")),Array("Кипр. Cup (Group A)",Array(108,0,9,"18:00","Apollon Limassol","Этникос Ашнас","?:?",""),Array(108,0,9,"18:30","Омония","Nea Salamis","?:?","")),Array("Марокко. GNFE-1",Array(108,0,9,"14:30","FUS Rabat","RCA Casablanca","?:?",""),Array(108,0,9,"14:30","WAC Casablanca","KACM Marrakech","?:?","")));';
$textToParse = str_replace('reports=', 'return ', $textToParse);
$textToParse = str_replace('Array', 'array', $textToParse);
$resultArray = eval($textToParse);
var_dump($resultArray);
?>


Только что проверил - работает. Не забудьте экранировать одинарные кавычки в Яваскрипт-исходнике.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Golda
Дата 12.1.2008, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 1
Всего: 42



FractalizeR, что хорошо при таком подходе - используется один язык, а не два и легко без участия броузера обработать много таких документов сразу. Но надежным его не назовешь. Все-таки PHP и javascript - разные языки и их синтаксис отличается.

Что будет, если в строке-элементе массива встретится последодвательность символов $ab, например? PHP будет искать переменную $ab для замены. Что будет, если елементы массива включают какие-то объекты или выражения с их участием (Object(a: 'a', b: 'b'), document.getElementById('myinput').value)? Даже простой опретор '+' в применении к строкам работается в этих языках по-разному. 

'a' + 'b' => 'ab' (jaascript)
'a' + 'b' => 0 (php)

Так что, на мой взгляд, лучше JSON

Добавлено через 1 минуту и 1 секунду
sTa1kEr, приветствую  smile 


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
FractalizeR
Дата 12.1.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: нет
Всего: 4



Я согласен с вами. Просто привык решать конкретные задачи smile Задача стояла импортировать пример smile Надеюсь, abalich нам расскажет, какое решение ему подходит и почему.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
abalich
Дата 24.1.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



Я попробовал все работает. Но эту страницу будуд смотреть 100 чел в он-лайн. Они будут обновлять строницу каждые пять минут, так как там результаты он-лайн спортивных событий. Если этот скрипт подходить для такой нагрузки, то он и мне подходит.


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
GeneralElectric
Дата 24.1.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 0
Всего: 16



Лично я, честно говоря, не понял, почему при просмотре сотней людей онлайн надо каждый раз парсить массив из яваскрипта.
PM MAIL   Вверх
MoLeX
Дата 24.1.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



Цитата(GeneralElectric @  24.1.2008,  14:59 Найти цитируемый пост)
Лично я, честно говоря, не понял, почему при просмотре сотней людей онлайн надо каждый раз парсить массив из яваскрипта.
  поддерживаю

Цитата(abalich @  24.1.2008,  14:51 Найти цитируемый пост)
Они будут обновлять строницу каждые пять минут,

почему бы каждые 5 минут не генирить документик который будет показываться пользователям в дальнейшем (в течении следующих 5 минут). Так вроде более логично сделать? а ?!



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
GeneralElectric
Дата 24.1.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 0
Всего: 16



Сдается мне, этот массив находится совсем не на сайте abalich...
И, на месте хозяев сайта, где этот массив находится, я бы в него много хорошего написал... Благодаря замечательному решению от 
FractalizeR...
PM MAIL   Вверх
sTa1kEr
Дата 24.1.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 5
Всего: 146



Конструкция eval() сама по себе является медленной и крайне опасной, а в случае если данные приходят извне, то это даже дырой не назовешь, просто открытый доступ к серверу.
PM MAIL   Вверх
abalich
Дата 25.1.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

Репутация: нет
Всего: нет



GeneralElectric, ты прав массив тыриться с другого сайта.
Там ситуация такая, что я не могу создавать файл каждые 5 минут.
Потому что этот скрипт будет установлен как минимум на 10 серверах.
А каждые пать минут нужно везде настраивать используя cron.
А если  более чем на 10 ? МНе нужно скрипт автомат. Без предварительной настройки.


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
ZlojEzh
Дата 25.1.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 2
Всего: 15



использовать метод FractalizeR'а крайне небезопасно,
владелец оригинального контента сможет выполнить на твоем сервере любой код.

Как альтернатива - использовать не одно регулярное выражение
как я понял, структура информации на оригинальном сайте двухуровневая
а в примере приведен только один элемент верхнего уровня, потому сходу написать пример парсера довольно сложно
если кинете ссылку на оригинальный сайт и у меня будет лишних 10 минут - напишу
(хотя в общем идею не одобряю...)

другой вариант - использовать JSON (как и предлагала )
кажись, для понимания исходного js-скрипта функцией json_decode достаточно заменить array(...) на [...]

Цитата

А каждые пать минут нужно везде настраивать используя cron.

совсем не обязательно
достаточно создать файлик (или запись в бд) с кешем нужной информации и при каждом запросе проверять время последней модификации. прошло больше пяти минут - качаем заново и генерим новый кеш.

PM MAIL ICQ   Вверх
FractalizeR
Дата 2.2.2008, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: нет
Всего: 4



Цитата

использовать метод FractalizeR'а крайне небезопасно,
владелец оригинального контента сможет выполнить на твоем сервере любой код.


Вы совершенно правы. Автор не сказал, где будет использоваться такой код.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.