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]   

> Описание: Как можно "поработать" над строкой в JS
SergeantPEPPER
Отправлено: 04 Марта, 2008 - 18:34:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




Здравствуйте, нужно сделать разбивку строки с помощью Javascript (или же полностью поменять метод решения моей задачи???).

Задача такова: у меня сайт имеет два языковых режима: русский и английский, все компоненты страниц поэтому я таскаю из базы данных в зависимости от выбранного режима. Текущий выбранный язык хранится в сессии, однако вот смена языка происходит через ссылку методом GET.
Для того, чтобы при выборе языка юзер отсался именно на текущей странице (включая все GET параметры), я обрабатываю событие OnClick на ссылке смены языка Javascript функцией

CODE (text):
скопировать код в буфер обмена
  1. function GetCurAddress ()
  2. {
  3.         return location.href;
  4. }


Проблема в том, что при каждом следующем клике на ссылке смены языка будет прибавлять к GET строке &lang=???, так что в конечном итоге получается примерно такая вещь:

CODE (text):
скопировать код в буфер обмена
  1. http://localhost/zamzam/index.php?content=news&lang=en&lang=ru&lang=en&lang=ru&lang=en

Как бы это аккуратно обойти или исправить?

(Отредактировано автором: 04 Марта, 2008 - 18:36:04)

 
 Top
EuGen Администратор
Отправлено: 04 Марта, 2008 - 19:04:09
Post Id


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


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


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




Вы можете сделать перенаправление пользователя. К примеру, lang.php - Ваша текущая страница (со ссылкой на смену языка), а на странице index.php у Вас реализована сама смена.
Делаете такую ссылку:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $return_str=(getenv('QUERY_STRING'))?urlencode(getenv('SCRIPT_NAME')."?".getenv('QUERY_STRING')):("lang.php");
  4. //эта ссылка располагается на lang.php
  5. //$lang - язык, на который нужно сменить текущий
  6. $url="http://localhost/zamzam/index.php?lang=".$lang."&callback=".$return_str;
  7. ?>
  8.  

В $url будет ссылка с параметром callback. Этот параметр Вам нужно использовать на странице смены языка таким образом:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //... тут Ваша обработка смены языка - пришедшего из lang.php параметра lang
  4. $callback=$_GET['callback'];
  5. header("Location: $callback");//этим Вы перенаправите клиента на страницу lang.php со всеми ее GET-параметрами, с которыми был сделан запрос на index.php
  6. ?>
  7.  

Это первое, что приходит на ум, и, скорее всего, не самое оптимальное.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SergeantPEPPER
Отправлено: 06 Марта, 2008 - 19:01:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




Отдельный скрипт с Редиректом в принципе, конечно, - вариант. Однако хотелось бы как-нибудь по-красивее решить эту проблемку...

Кстати, у меня сайт работает через одну страницу index.php (то есть, если я хочу попасть на страницу новостей, я захожу на index.php?content=news, где потом следует include(news.php) ).

У меня в задумке было вот что:

На index.php есть две ссылки на смену языка. Каждая из них ссылается на страницу index.php со всеми текущими параметрами и подстыковывает к ним &lang=???

Чтобы не получалось бесконечной цепочки этих lang-ов, при непрерывных повторных сменах языка через ссылки я бы поставил на событие onclick этих ссылок какой-нибудь обработчик. Он бы смотрел бы текущую строку GET параметров, и в случае, если она уже содержит параметр lang, удалял бы его.

Удалял - это я имею ввиду переходил бы по данному адресу не учитывая lang, который уже имелся в наличии.

Как осуществить такой анализ строки в Javascript я не знаю. Подскажите, если не сложно или дайте ссылку на какую-нибудь литературу, а то я уже семь учебников прошарил - ничо не нашел.
 
 Top
valenok
Отправлено: 06 Марта, 2008 - 20:25:35
Post Id



Здесь могла бы быть ваша реклама


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


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




Парсинг "GET" параметров я писал когда то.
Только потерял.. Напишу потом ещё раз.
А пока можно сделать просто

PHP:
скопировать код в буфер обмена
  1. onclick = "document.location='<?PHP
  2. echo preg_replace("/lang=(ru|en)?&?/i","",$_SERVER["REQUEST_URI"]);
  3. ?>&lang=X' "


-------------------------------- ------------

PHP:
скопировать код в буфер обмена
  1. var url = "http://host/index.php?id=7&page=2&lang=ch#TheEnd";
  2. var name_href = ""; // обязательная строка
  3. var GET = Array(); // Эта тоже пригодится
  4.  
  5. function parseGET(str){  
  6.  
  7.         str = str.split('?');
  8.         str = str[1];
  9.  
  10.         if(str.indexOf('#')!=-1)    
  11.         {    
  12.                 name_href = str.substr(str.indexOf('#')+1);
  13.                 str = str.substr(0,str.indexOf('#'));
  14.         }
  15.  
  16.         params = str.split('&');
  17.         for (i=0; i<params.length; i++)
  18.         {
  19.                 var keyval = params[i].split('=');
  20.                 GET[keyval[0]]=keyval[1];
  21.         }
  22.      
  23. return (GET);
  24. };
  25.  
  26. GET = parseGET(url);
  27. alert(GET['page']);

(Отредактировано автором: 06 Марта, 2008 - 20:56:05)



-----
Truly yours, Sasha.
 
My status
 Top
SergeantPEPPER
Отправлено: 13 Марта, 2008 - 18:44:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007  
Откуда: Казань


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




Вот за последний js скрипт БОЛЬШОЕ спасибо. ОЧЕНЬ помог, и главное - это сильно развязывает руки Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB