![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
Есть JS код
Парюсь. Уже неделю. 1)Как вынуть оттуда Массивы при помощи регулярок. Причем каждый раз в аваскрипте их будет разное кол-во. 2) или же можно из этого сделать PHP массив без регулярок? -------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
Golda,
Поясни че ты имела виду. Это сообщение отредактировал(а) abalich - 10.1.2008, 11:59 -------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
abalich, про JSON можите прочитать на официальном сайте http://json.org/json-ru.html
Передать весь масcив при помощи JSON-а можно очень просто. Приведу пример как это сделать при помощи библиотеки из PHP 5.2
|
|||
|
||||
| FractalizeR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: нет Всего: 4 |
Обратите внимание, что синтаксис Яваскрипт при работе с массивами почти такой же, как и синтаксис PHP. Можно просто заменить все Array на array, а затем сделать eval выражения:
Только что проверил - работает. Не забудьте экранировать одинарные кавычки в Яваскрипт-исходнике. -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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, приветствую -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| FractalizeR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: нет Всего: 4 |
Я согласен с вами. Просто привык решать конкретные задачи
-------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
Я попробовал все работает. Но эту страницу будуд смотреть 100 чел в он-лайн. Они будут обновлять строницу каждые пять минут, так как там результаты он-лайн спортивных событий. Если этот скрипт подходить для такой нагрузки, то он и мне подходит.
-------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| GeneralElectric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 0 Всего: 16 |
Лично я, честно говоря, не понял, почему при просмотре сотней людей онлайн надо каждый раз парсить массив из яваскрипта.
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: нет Всего: 140 |
почему бы каждые 5 минут не генирить документик который будет показываться пользователям в дальнейшем (в течении следующих 5 минут). Так вроде более логично сделать? а ?! -------------------- Amazing |
|||
|
||||
| GeneralElectric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 0 Всего: 16 |
Сдается мне, этот массив находится совсем не на сайте abalich...
И, на месте хозяев сайта, где этот массив находится, я бы в него много хорошего написал... Благодаря замечательному решению от FractalizeR... |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Конструкция eval() сама по себе является медленной и крайне опасной, а в случае если данные приходят извне, то это даже дырой не назовешь, просто открытый доступ к серверу.
|
|||
|
||||
| abalich |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 434 Регистрация: 26.2.2007 Где: Воронеж Репутация: нет Всего: нет |
GeneralElectric, ты прав массив тыриться с другого сайта.
Там ситуация такая, что я не могу создавать файл каждые 5 минут. Потому что этот скрипт будет установлен как минимум на 10 серверах. А каждые пать минут нужно везде настраивать используя cron. А если более чем на 10 ? МНе нужно скрипт автомат. Без предварительной настройки. -------------------- Мой дядя самых честных "грабил"... |
|||
|
||||
| ZlojEzh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 2 Всего: 15 |
использовать метод FractalizeR'а крайне небезопасно,
владелец оригинального контента сможет выполнить на твоем сервере любой код. Как альтернатива - использовать не одно регулярное выражение как я понял, структура информации на оригинальном сайте двухуровневая а в примере приведен только один элемент верхнего уровня, потому сходу написать пример парсера довольно сложно если кинете ссылку на оригинальный сайт и у меня будет лишних 10 минут - напишу (хотя в общем идею не одобряю...) другой вариант - использовать JSON (как и предлагала ) кажись, для понимания исходного js-скрипта функцией json_decode достаточно заменить array(...) на [...]
совсем не обязательно достаточно создать файлик (или запись в бд) с кешем нужной информации и при каждом запросе проверять время последней модификации. прошло больше пяти минут - качаем заново и генерим новый кеш. |
|||
|
||||
| FractalizeR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: нет Всего: 4 |
Вы совершенно правы. Автор не сказал, где будет использоваться такой код. -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |