Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: куда деваются слова?
 
 автор: seregarulez   (24.06.2008 в 17:09)   письмо автору
 
 

Здравствуйте! Нужна помощь)
У меня есть 3 строки. Из них делаю одну:
$str=$str1."\".$str2."\".$str3;
потом получившуюся строку успешно записываю в cookie. Затем в нужном месте извлекаю из cookie строку. С помощью функции explode по разделителю разбиваю строку на элементы массива. При выводе элемента массива на экран выводится все, что необходимо. НО! Если в элементе массива несколько слов через пробел, выводится только первое слово. Не подскажте,в чем проблема? Строки str1,str2,str3 получаются из формы с использованием функции htmlspecialchars()

   
 
 автор: AcidTrash   (24.06.2008 в 17:14)   письмо автору
 
   для: seregarulez   (24.06.2008 в 17:09)
 

Форму свою приведите? Полагаю там кроется тайна, судя по всему у вас одно слово и записывается, т.к наверняка value полей формы не ограничиваются кавычками.

   
 
 автор: seregarulez   (24.06.2008 в 17:21)   письмо автору
 
   для: AcidTrash   (24.06.2008 в 17:14)
 

вот текстовое поле
<input name="str1" type="text" id="str1" size="70" />
форма как форма. Всегда делал, с пробелами проблем не было

$_POST['str1']=htmlspecialchars($_POST['str1']);
$str1 = $_POST['str1'];

   
 
 автор: AcidTrash   (24.06.2008 в 17:45)   письмо автору
 
   для: seregarulez   (24.06.2008 в 17:21)
 

У вас синтаксис не правильный
$str=$str1."\".$str2."\".$str3;

странно, что такая строка у вас ошибок не выдает.
замените на строку
$str=$str1."\\".$str2."\\".$str3;

   
 
 автор: seregarulez   (24.06.2008 в 18:08)   письмо автору
 
   для: AcidTrash   (24.06.2008 в 17:45)
 

почему обязательно двойной разделитель? А если использовать вместо "\" "|" или "+"?

   
 
 автор: Trianon   (24.06.2008 в 18:12)   письмо автору
 
   для: seregarulez   (24.06.2008 в 18:08)
 

>почему обязательно двойной разделитель?
"\\" - это не двойной разделитель. Это один символ \
строки

   
 
 автор: seregarulez   (24.06.2008 в 21:08)   письмо автору
 
   для: Trianon   (24.06.2008 в 18:12)
 

от разделителя не зависит...(

   
 
 автор: BinLaden   (24.06.2008 в 21:13)   письмо автору
 
   для: seregarulez   (24.06.2008 в 21:08)
 

Приведите конкретный пример, когда такое происходит. Кодом.

   
 
 автор: seregarulez   (24.06.2008 в 21:46)   письмо автору
 
   для: BinLaden   (24.06.2008 в 21:13)
 

<?php
if(isset($_POST['Submit']))
{
$_POST['str1']=htmlspecialchars($_POST['str1']);
$_POST['str2']=htmlspecialchars($_POST['str2']);
$_POST['str3']=htmlspecialchars($_POST['str3']);
$str1$_POST['str1'];
$str2$_POST['str2'];
$str3$_POST['str3'];
$str=$str1."|".$str2."|".$str3;
setcookie("str",$str,mktime(0,0,0,1,25,2009));
}
?>



<?
if(isset($_COOKIE['str']))
              {
                 $
123=explode("|",$_COOKIE['str']);
                 echo 
"value=".$123[0];
               }
?>

выводится должна $str1. А выводится только первое слово до пробела(любой длины). Если в строке нет пробелов, то выводится все

   
 
 автор: AcidTrash   (24.06.2008 в 22:05)   письмо автору
 
   для: seregarulez   (24.06.2008 в 21:46)
 

>$123=explode("|",$_COOKIE['str']);

$123 - это по вашему нормально? О-да. Имя переменной не может начинаться с цифры!

   
 
 автор: seregarulez   (24.06.2008 в 22:18)   письмо автору
 
   для: AcidTrash   (24.06.2008 в 22:05)
 

я просто заменил все переменные. Не спрашивайте зачем. На самом деле не в этом ошибка
Если выводить $_COOKIE['str'], то все нормально выводится.
Т.е. например выводится следующее:
слово1 слово2 слово3|слово4|слово5
А после использования explode() и обращения к 0-ому элементу массива выводится только слово1

пробовал вытаскивать слова из строки при помощи функции stristr(), все то же самое получается

кажется втыкнул, в чем ошибка. Спасибо большое всем за помощь!

   
 
 автор: AcidTrash   (24.06.2008 в 22:54)   письмо автору
 
   для: seregarulez   (24.06.2008 в 22:18)
 

>кажется втыкнул, в чем ошибка
Очень интересно и в чем? Просто если бы вы сразу привели коды которые используете(а не выдумывать), где возможно ошибки, то думаю решилось бы все быстрее.

   
 
 автор: seregarulez   (25.06.2008 в 09:23)   письмо автору
 
   для: AcidTrash   (24.06.2008 в 22:54)
 

AcidTrash, Вы с самого начала были правы)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования