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

Форум PHP

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

 

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

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

тема: пробел заменяется на %. Что Делать?
 
 автор: Полина   (10.12.2007 в 18:28)   письмо автору
 
 

Причтении строки из файла пробел между словами заменяется на %. Причем если в файле строка записана по английски, то этого не происходит.
как сделать так чтобы строка читалась нормально.

Ну т.е. у меня так: записываю в файл строчку Привет всем.
Потом достаю из файла эту строчку, называю ее переменной, делаю из нее ссылку, а в ссылке вижу
.../Привет%20всем.
и конечно по ссылке не идет.
хелп плз.

   
 
 автор: Trianon   (10.12.2007 в 18:30)   письмо автору
 
   для: Полина   (10.12.2007 в 18:28)
 

в ссылках как раз таки не может быть прямых пробелов.
Равно как, впрочем и русских букв.
Не идет пожалуй именно из-за русских букв. А вовсе не из-за пробелов.

Применяйте urlencode() / rawurlencode()

   
 
 автор: Полина   (10.12.2007 в 18:39)   письмо автору
 
   для: Trianon   (10.12.2007 в 18:30)
 

а вы не подскажете как ее правильно использовать, а то я пишу
echo "<a href='urlencode($file)'>...</a>";
а ссылка не работает, в ней пишет urlencode($file),
где переменная подменяется соответствующим значением.

   
 
 автор: KPETuH   (10.12.2007 в 18:46)   письмо автору
 
   для: Полина   (10.12.2007 в 18:39)
 

>echo "<a href='urlencode($file)'>...</a>";

<?
echo "<a href='".urlencode($file)."'>...</a>";

   
 
 автор: Полина   (10.12.2007 в 18:54)   письмо автору
 
   для: KPETuH   (10.12.2007 в 18:46)
 

все прекрасно, только он мой пробел заменяет на плюс и по ссылке не идет конечно же.
почему??

   
 
 автор: Полина   (10.12.2007 в 18:56)   письмо автору
 
   для: Полина   (10.12.2007 в 18:54)
 

Просто дело в том, что я создаю папку Мои фото, записываю имя этой папки в некоторой файл.
потом это имя (Мои фото) считывается из файла, записывается в переменную и делается ссылкой.
Но т.к. там получается Мои+фото.Он этой папки не находит.((

   
 
 автор: Unkind   (10.12.2007 в 18:59)   письмо автору
 
   для: Полина   (10.12.2007 в 18:56)
 

Надо URL-кодировать не весь URL (URI), а только значения параметров (ну и нестандартные имена в путях).

Например,
<?php
echo "http://example.com/?var=" urlencode("значение"), " ""http://example.com/" urlencode("папка");
?>

   
 
 автор: Полина   (10.12.2007 в 21:31)   письмо автору
 
   для: Unkind   (10.12.2007 в 18:59)
 

Спасибо, у меня работает.
У меня еще возник вопрос. У меня в какой то там папке лежит файл с картинкой, записанный как переменная $img.
Возможно с помощью какой-либо функции узнать его абсолютный путь?
И если возможно то как его правильно вывести на экран.
Я вывожу строкой
"<img src=\"realpath($img)\" border=0>";
у меня не работает.
realpath() предположительно функция пути.
я что-то ен правильно пишу?

   
 
 автор: Trianon   (10.12.2007 в 21:39)   письмо автору
 
   для: Полина   (10.12.2007 в 21:31)
 

в атрибуте src языка HTML Вы должны записывать так называемый URI - универсальный идентификатор ресурса (или его сокращение), а не полный путь к файлу в иерархии файловой системы сервера.

К примеру, URI может быть такой
http://softtime.ru/skins/extend/images/enterforum.gif

А realpath будет (не факт, но гипотетически запросто) такой
/home/softtime/htdocs/skins/extended/images/enterforum.gif

или даже такой:
D:\inetpub\wwwroot\skins\extended\images\enterforum.gif

   
 
 автор: Полина   (10.12.2007 в 21:55)   письмо автору
 
   для: Trianon   (10.12.2007 в 21:39)
 

А как получить URI?

   
 
 автор: Trianon   (10.12.2007 в 21:59)   письмо автору
 
   для: Полина   (10.12.2007 в 21:55)
 

собрать руками из $_SERVER['HTTP_HOST'] , части $_SERVER['PHP_SELF'] и относительного пути.
Хотя обычно он полный не нужен. Обычно можно обойтись относительным путем. Зачем Вам полный?

   
 
 автор: Полина   (10.12.2007 в 22:06)   письмо автору
 
   для: Trianon   (10.12.2007 в 21:59)
 

Понимаете я пишу вот такую штуку:
chdir("./$cat");
$dir_img = opendir(".");
while($img = readdir($dir_img))
{
if($img!="." && $img!=".." && $img!="dir.txt")
{
echo "$img<br>";
$imgsize=getimagesize($img);
echo "<img src=\"./$cat/$img\" border=0>";
//echo "<img src=\"realpath($img)\" border=0>";
echo "$imgsize[0]*$imgsize[1]<br>";
}
}
closedir($dir_img);

и у меня не выводиться картинка.
я уже замучалась, не знаю где ошибка.
получается либо он не понимает что в этой директории находится такой файл либо директорию он не записывает в путь либо что.
Прописываю полность путь, показывает картинку, но мне так не надо. мне нужна еще потом эта картинка как переменная, чтобы ее уменьшить.

   
 
 автор: Trianon   (10.12.2007 в 22:08)   письмо автору
 
   для: Полина   (10.12.2007 в 22:06)
 

Запустив скрипт, откройте в браузере исх. текст html-кода , посмотрите (и процитируйте), как выглядит форма и тег в ней.
Заодно сообщите, как выглядит в браузере полный адрес страницы со скриптом, начиная с http:

   
 
 автор: Полина   (10.12.2007 в 22:16)   письмо автору
 
   для: Trianon   (10.12.2007 в 22:08)
 

вот: <img src="./Папка/Копия+IMG_0105.jpg" border=0>
так выглядит путь к картинке.
а формы у меня нет. переменная $cat получается берется из
<a href=\"index.php?cat=".urlencode($file)."\"> так,
а потом вот так $_GET['cat'].
Наверно я вас немного запутал. но я тоже не очень поняла что нужно.
Вот полный путь к скрипту, если $cat выбрана.
http://www.myfolder/Fotogallery/index.php?cat=%CD%E0+%EF%F3%F2%E8+%EA+%E2%FB%E7%E4%EE%F0%EE%E2%EB%E5%ED%E8%FE
а если не выбрана, то соответственно
http://www.myfolder/Fotogallery/index.php

   
 
 автор: Trianon   (10.12.2007 в 22:20)   письмо автору
 
   для: Полина   (10.12.2007 в 22:16)
 

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

   
 
 автор: Полина   (10.12.2007 в 22:29)   письмо автору
 
   для: Trianon   (10.12.2007 в 22:20)
 

Z:\home\myfolder\www\FotoGallery\Мои фото
ну допустим так.
Вы это имели ввиду?

   
 
 автор: Trianon   (10.12.2007 в 22:35)   письмо автору
 
   для: Полина   (10.12.2007 в 22:29)
 

нет. не в windows explorer а в браузере.
я имел в виду что-то вроде
http://www.myfolder/FotoGallery ...... 015.JPG
Вот этот путь полностью приведите, пожалуйста.

Между прочим, называя имена и каталоги именами, содержащими символы национальных алфавитов, Вы навлекаете на себя целый вагон сложностей. Без них (без русских букв в адресе) никак нельзя обойтись?

   
 
 автор: Полина   (10.12.2007 в 22:44)   письмо автору
 
   для: Trianon   (10.12.2007 в 22:35)
 

Ну понимаете у меня же он так не пишет, у меня на страничку должны выводиться несколько изображений, находящихся в папке.

Я тут пытаюсь картику как то отобразить, но у меня не получается. Как же посмотрю путь в браузере?

   
 
 автор: Trianon   (10.12.2007 в 22:56)   письмо автору
 
   для: Полина   (10.12.2007 в 22:44)
 

попробуйте написать в скрипте

echo "$img<br>";
$imgsize=getimagesize($img);
echo "<img src=\"". urlencode($cat)."/".urlencode($img)."\" border=0>";

   
 
 автор: Полина   (10.12.2007 в 23:02)   письмо автору
 
   для: Trianon   (10.12.2007 в 22:56)
 

могу сказать точно: чуда не произошло.
ну что же здесь не так. почему путь то он не понимает.
я делала такой же код, только там картинки содержались не в ./$cat, а непосредственно в ".".
Все хорошо работало.
почему здесь нет??!!!

   
 
 автор: Полина   (10.12.2007 в 22:49)   письмо автору
 
   для: Trianon   (10.12.2007 в 22:35)
 

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

   
 
 автор: Trianon   (10.12.2007 в 23:00)   письмо автору
 
   для: Полина   (10.12.2007 в 22:49)
 

Вы просто не хотите отвечать на вопросы.
Я Вас спрашиваю, как адрес выглядит, выпишете Папка, в то время как из запуска скрипта ясно следует что папка вовсе не папка а На пути к выздоровлению.
Если по Вашему дело не в алфавите - разбирайтесь сами.

PS. Несколько изображений скопом, не научившись предварительно показывать их по-одиночке, Вы не выведете на экран никогда.
PPS
>пользователь сам пишет имя каталога, в котором бы он хотел разместить какие то фото. он же может по разному писать. да и когда по русски пишется красиво.
Да . Пользователь пишет. Да. Красиво.
Но ни один скрипт не хранит файлы физически в тех же именах и в так же именованных папках, и никогда их оттуда не показывает. Пользовательские имена хранятся совершенно отдельно от файловых.
И папки и фотографии получают номера, как правило. И на 95% из-за того, что национальные символы в именах ресурсов обходятся исключительно дорогой ценой.

Dixi.

   
 
 автор: Полина   (10.12.2007 в 23:05)   письмо автору
 
   для: Trianon   (10.12.2007 в 23:00)
 

Ну я образно.
А что название важно?

И во всех галереях, которые я смотрела все похоже делается.

   
 
 автор: exp   (11.12.2007 в 00:02)   письмо автору
 
   для: Полина   (10.12.2007 в 23:05)
 

как вариант сделать такие имена папок
http://site.ru/imgs/%CD%E0+%EF%F3%F2%E8/kartinka.jpg
всмысле такой будет путь фактически , а для читаемости декодировать при выводе в браузере.
windows так и делает мне кажется, только когда в адресной строке пробелы их браузер преобразует в %20 , а не в +
такое сделает rawurlencode();

всмысле корректнее будет имя папки %CD%E0%20%EF%F3%F2%E8 , и можно будет попробовать в адресной строке набрать просто http://site.ru/imgs/На пути/kartinka.jpg


// хотя нет :)

русские буквы так и остались в адресной строке :))

   
 
 автор: steiger   (11.12.2007 в 09:50)   письмо автору
 
   для: Полина   (10.12.2007 в 23:05)
 

Название важно. Интересно, где Вы видели в адресной строке русские символы... И пробелы.
Пользователь может вводить имя создаваемой директории русскими буквами. А в скрипте лучше сделать перекодировку русских символов в латиницу. Думается, никакой разницы, будет называться папка "мои_фото" или "moi_foto". Если интересует, могу привести здесь пример простенькой функции транслитерования.
Избавьтесь Вы от кириллицы - проще будет.

   
 
 автор: Полина   (11.12.2007 в 20:27)   письмо автору
 
   для: steiger   (11.12.2007 в 09:50)
 

я уже поняла, что из-за русских названий не работало.
Если вам не сложно покажите пример пожалуйста.
И у меня возникает еще одна проблема. Все картинки которые я читаю из созданной пользователем папки должны перед выводом быть обработаны файлом, который их будет сжимать. Но он находиться в основном каталоге, а не в этой папке и картинок не распознает.
Т.е. вот:
{
chdir("./$cat");
$dir_img = opendir(".");
while($img = readdir($dir_img))
{
if($img!="." && $img!=".." && $img!="dir.txt")
{
echo "$img<br>";
$imgsize=getimagesize($img);
include "small.php";
echo "<img src=\"". urlencode($cat)."/".urlencode($img)."\" border=0>";
echo "$imgsize[0]*$imgsize[1]<br>";
}
}
closedir($dir_img);
}

где small.php

$wc=150;
$Oldimg=imagecreatefromjpeg($img);
$w=imagesx($Oldimg);
$h=imagesy($Oldimg);
header("Content-type: image/jpeg");
$ratio=$w/$wc;
$w1=$w/$ratio;;
$h1=$h/$ratio;
$Newimg=imagecreatetruecolor($w1,$h1);
imagecopyresampled($Newimg,$Oldimg,0,0,0,0,$w1,$h1,$w,$h);
imagejpeg($Newimg,"",100);
imgdestroy($Newimg);
imgdestroy($Oldimg);

Если писать код где выбираем не каталог $cat а основную директорию. он у меня работает
а так почему то нет.
я не понимаю как к нему путь написать.
я include сначала заменяла строчкой
echo "<a href=\"". urlencode($cat)."/".urlencode($img)."\" target=_blank><img src="\small.php?img=$img\" border=0><br></a>";
но ничего нет. ссылки работают,а картинки не тоображаются.
я думаю что эта строчка правильней , чем инклюд.

   
 
 автор: Trianon   (11.12.2007 в 20:29)   письмо автору
 
   для: Полина   (11.12.2007 в 20:27)
 


"  ... <img src=\"small.php?img=".urlencode($img)."\" border=0 > ... "

   
 
 автор: Полина   (12.12.2007 в 07:47)   письмо автору
 
   для: Trianon   (11.12.2007 в 20:29)
 

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

   
 
 автор: KPETuH   (12.12.2007 в 08:05)   письмо автору
 
   для: Полина   (11.12.2007 в 20:27)
 

> $Oldimg=imagecreatefromjpeg($img);

Помоему проблема в это строке, передавайте туда имя файла вместе с именем папки в каторой он находится....


<?
$Oldimag
==imagecreatefromjpeg("./".$cat."/".$img);


за код не ручаюсь так как не вдавался в подробности вашего скрипта, но суда по симптомам описанными вами проблема в этом...

   
 
 автор: Полина   (12.12.2007 в 10:08)   письмо автору
 
   для: KPETuH   (12.12.2007 в 08:05)
 

ну вообщем нет, не заработало. а он понимает, что такое img?. Файл small.php я привела полностью. Там нет img, толлко переменная $img. Может быть нужно както передавать туда? Например GETом. Только не соображу как это сделать.

   
 
 автор: KPETuH   (12.12.2007 в 13:05)   письмо автору
 
   для: Полина   (12.12.2007 в 10:08)
 

скажите а small.php должен сжимать сам файл или выводить уменьшенное превью?

для 2:
<?php
$cat
='image';
$dir_img opendir("./$cat");
while(
$img readdir($dir_img))
{
if(
$img!="." && $img!=".." && $img!="dir.txt")
{
    echo 
$path=$cat."/".$img;
    
$imgsize=getimagesize($path);
    echo 
"<img src=\"small.php?file=$path\" border=0><br>"
    echo 
"$imgsize[0]*$imgsize[1]<br>";
}
}
closedir($dir_img);
?>


и small.php

<?php
$wc
=150;
$Oldimg=imagecreatefromjpeg($_GET['file']);
$w=imagesx($Oldimg);
$h=imagesy($Oldimg);
header("Content-type: image/jpeg");
$ratio=$w/$wc;
$w1=$w/$ratio;;
$h1=$h/$ratio;
$Newimg=imagecreatetruecolor($w1,$h1);
imagecopyresized($Newimg,$Oldimg,0,0,0,0,$w1,$h1,$w,$h);
imagejpeg($Newimg);
imagedestroy($Newimg);
imagedestroy($Oldimg);
?>


скрипты лежат в корне а картинки в папке название которой определяется переменной $cat

   
 
 автор: Полина   (12.12.2007 в 13:45)   письмо автору
 
   для: KPETuH   (12.12.2007 в 13:05)
 

нет, сжимать файл не должен, мне нужно выводить уменьшенное изображение. я пишу файловую фотогалерею.
Спасибо большое, сейчас попробую так как у вас показано. сделать.

   
 
 автор: Полина   (12.12.2007 в 14:05)   письмо автору
 
   для: KPETuH   (12.12.2007 в 13:05)
 

У меня работает!!!!
Молодой человек, Вы даже не представляете как я вам благодарна. Спасибо Вам большое.

   
Rambler's Top100
вверх

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