RSS

Компьютерная терминология    1_9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  .....  A  Б  В  Г  Д  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч

parse_str: из PHP в JS

   


  • Как не оказаться обманутым при работе с SEO-агентствами
  • Ошибки в оптимизации контента
  • Распространенные ошибки оптимизации
  • Ссылки приносящие трафик
  • Юзабилити сайта
  • Оптимизация конверсионного пути
  • Основы внутренней оптимизации сайта
  • Поисковая оптимизация или контекстная реклама
  • Руководство по написанию эффективной статьи
  • Продвижение по НЧ-запросам
  • Мобильные версии сайтов и их продвижение
  • Линкбейтинг


  • Юзабилити интернет-магазина
  • Основы комментирования
  • Оптимизация содержимого тегов title, description, keywords
  • Способы уникализации контента на сайте
  • Борьба с дублями страниц
  • Дизайн и SEO
  • Оптимизация поведенческих факторов ранжирования
  • Покупка домена
  • Web-Designed
  • Webhints
  • Файл настроек .htaccess
  • Настройка robots.txt
Консультация юриста
Ваш регион:
Ваше имя:

Ваш телефон

(можно сотовый)

Ваш вопрос (можно кратко)


 
В серии статей были рассмотрены некоторые моменты JS, позволяющие выполнять сборку страницы на стороне пользователя, как если бы это выполнялось на стороне сервера с использованием серверных скриптов. Тема, безусловно, заслуживает внимания. Ведь, даже не смотря на то, что сегодня уже есть бесплатные хостинги с SSI и PHP - все они вставляют свою рекламу. Те же хостинги, на которых реклама отсутствует - не предоставляют возможность серверного скриптования.

Если на хостинге из разряда последних упомянутых применять сборку страниц с помощью JS, тогда часто возникает необходимость в JS-разборе строки URL-запроса, в вылавливании оттуда имен и значений параметров. Делать это можно по-разному. Я хочу предложить читателю свой простой и удобный способ, уходящий корнями в PHP.
В настройках PHP есть такой "не очень хороший" параметр, как register_globals. Почему "не очень хороший"? А потому, что начиная с версии PHP 4.2.0 его значение по умолчанию есть OFF, а до этого - было ON. Вот и пришлось помучиться немного, пока разобрался, почему сайт, работающий у меня на локале под PHP 4.0.3, не хотел работать на сервере под PHP 4.3.6. А параметр-то этот управляет разрешением на регистрацию в глобальном пространстве имен скрипта Environment-, GET-, POST-, Cookie-, и Server-переменных. Вот и суть проблемы оказалась в том, что строка URL-запроса не обрабатывалась автоматически перед запуском скрипта, и переменные из URL не были определены. Обошлось все как нельзя лучше. Вместо того, чтобы всюду заменять $var_from_url на $_SERVER["var_from_url"], сделал так: в начале скрипта поставил строчку parse_str($_SERVER["QUERY_STRING"]) - для GET-переменных эффект тот же, что и при register_globals=ON.
Функция parse_str(s [, v]) занимается тем, что "парсит" (разбирает) переданную ей строку, как если бы это была строка запроса из URL. Разбор заключается в том, что в пространство имен скрипта (либо, если указан, в массив v) вносятся переменные из строки s, и им присваиваются соотв. значения. Туманно... Вот пример:

<?
  $s = "eyes=hazel&age=28";
  parse_str($s);
  echo "eyes: ".$eyes."; age: ".$age;
  parse_str($s,$v);
  echo "\nv['eyes']: ".$v['eyes']."; v['age']: ".$v['age'];
?>

А недавно работал с JS, и возникла у меня мысль, что в JS просто ужасно неудобно без такой функции, как parse_str. Избегая дальнейших измышлений, сразу привожу работающий пример, содержащий написанную функцию:

Файл 1.htm - его открываем в браузере:
<html>
<body>
<form action="2.htm" method="get">
x = <input type="text" name="x">
y = <input type="text" name="y">
<input type="submit" value="submit">
</form>
</>
</html>
Файл 2.htm - открывается при отправке формы из 1.htm
<html>
<head>
<script language="JavaScript1.2">
/*второй аргумент по умолчанию опущен. доступ к нему - arguments[1]*/
 function parse_str( s) {
  var a = s.split(/&|=/);
  switch (arguments.length) {
   case 1:
    for ( var i=0; i<a.length; i++) {
     eval(a[i] + "=\"" + unescape(a[++i]) +"\"");
    }
    break;
   case 2:
    for ( var i=0; i<a.length; i++)
     arguments[1][a[i]] = unescape(a[++i]);
  }
 }
/*переменные вносятся в глобальное пространство имен*/
 parse_str(location.search.slice(1)); 
 var v = new Array();
/*переменные вносятся в массив v. Индексы массива - имена переменных*/ 
 parse_str(location.search.slice(1),v);
</script>
</head>
<body>
<script language="JavaScript">
 document.write("x = " + x + "; y = " + y);
 document.write("<br>v['x'] = " + v['x'] + "; v['y'] = " + v['y']);
</script>
</>
</html>

P.S. parse_str() в этом варианте корректно обрабатывает только строки, не содержащие в значениях параметров escape-нутых кириллических символов и прочей дребедени. Для поддержки кириллических и, вообще, UNICODE-значений параметров необходимы некоторые изменения кода.

seo & website usability   inet   os faq   hardware faq   memory   video   cpu   hdd   mainboard faq   printer & scaner   modem   mobiles   hackzone

Технологии поискового маркетинга
Практика поискового маркетинга
Flash
Тэги
XML
DHTML
PHP
MySQL
WebMail
.NET
VBScript
CGI
Графические форматы Интернета
WEB-сайт шаг за шагом
CMS faq
FRAME faq
CSS faq
SSI faq
RSS faq
WAP faq
Web-Designed
Webhints
Файл настроек .htaccess
Настройка robots.txt

po gonn © 2005 "JULI'S BEEHIVE"