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
Форумы портала PHP.SU :: Версия для печати :: getimagesize не понимает имена с пробелами
Форумы портала PHP.SU » » Графика в PHP » getimagesize не понимает имена с пробелами

Страниц (1): [1]
 

1. Telnet - 15 Июня, 2011 - 18:41:04 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $imagename='http://localhost/joomla/test/index.php?option=com_htmlmapgenerator&controller=showmap&task=createmap&imagename=balloon 20 uid 201111211.gif';
  2.  
  3. $sizePic=getimagesize($imagename);
  4.  
  5. $w_src = $sizePic[0];
  6. $h_src = $sizePic[1];
  7.  
  8. echo 'ширина - '.$w_src;
  9. echo '</br>';
  10. echo 'высота - '. $h_src;

Если в имени файла переданного функции getimagesize встречаются пробелы(balloon 20 uid 201111211.gif) то функция ни чего не видит, если имя такое
http://localhost/joomla/test/ind[dot][dot][dot]magename=jpg[dot]jpg
то все нормально
Если использую urlencode то и без пробелов ни чего не выводит.

Как сделать так, что я мог получить размер изобрежения.
2. Мелкий - 15 Июня, 2011 - 18:46:11 - перейти к сообщению
Как используете urlencode?
3. Telnet - 15 Июня, 2011 - 19:54:23 - перейти к сообщению
$sizePic=getimagesize(urlencode($this->imagename));

$this->imagename получаем из вида но он передается нормально, а вот getimagesize мне нужно что б узнать ширину и высоту картинки
4. Champion - 15 Июня, 2011 - 20:58:01 - перейти к сообщению
а если экранировать?
(Добавление)
кстати, вы так используете urlencode, что он енкодит и двоеточие и слеши в адресе. Наверное, вам этого не очень хочется, правда ведь?
5. movEAX - 15 Июня, 2011 - 20:59:27 - перейти к сообщению
а если ' ' заменить на '+' ?
6. Telnet - 15 Июня, 2011 - 21:18:25 - перейти к сообщению
А как экранировать
перед каждым пробелом ставить / слеш?

А заменять на +, разве можно попробую отпишусь.
7. Мелкий - 15 Июня, 2011 - 21:31:37 - перейти к сообщению
Champion пишет:
кстати, вы так используете urlencode, что он енкодит и двоеточие и слеши в адресе. Наверное, вам этого не очень хочется, правда ведь?

Я именно про то и подумал, да.

Telnet, само собой, так urlencode работает не так, как вы того хотите. Ему скармливать надо непосредственно то, что надо закодировать, т.е. в вашем случае аргумент параметра imagename.
8. Telnet - 15 Июня, 2011 - 21:58:29 - перейти к сообщению
А можно поподробней что значит "аргумент параметра imagename"
Если не трудно пример на PHP, как нужно.
9. Мелкий - 15 Июня, 2011 - 22:14:01 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $imagename='http://localhost/joomla/test/index.php?option=com_htmlmapgenerator&controller=showmap&task=createmap&imagename='.urlencode('balloon 20 uid 201111211.gif');
10. Telnet - 16 Июня, 2011 - 09:35:30 - перейти к сообщению
<img src="http://localhost/joomla/test/upload/admin/balloon+uid+1106706.gif" title="картинка http://localhost/joomla/test/upl[dot][dot][dot]+uid+1106706[dot]gif " alt="картинка http://localhost/joomla/test/upload/admin/balloon+uid+1106706.gif" height="" width="">

После предложенных вами манипуляций src картинки теперь выглядит вот так, и если раньше все браузеры хоть видели файл картинки и отображали его но не выставляли высоту и ширину, кроме IE он технично ставил изображению 1 px высоты и ширины.
То теперь только опера отрендерила картинку, а все остальные не справились.
11. Viper - 16 Июня, 2011 - 11:27:05 - перейти к сообщению
Telnet ну так надо ж кодировать спецсимволы. + это результат urlencode. Соответственно ссылку нужно пропускать через urldecode.
12. Opo6ac - 16 Июня, 2011 - 14:34:12 - перейти к сообщению
А вы уверены, что в файловой системе вообще существует такой файл?

balloon 20 uid 201111211.gif - да
balloon+20+uid+201111211.gif - нет
13. movEAX - 16 Июня, 2011 - 15:36:01 - перейти к сообщению
Ну попробуйте вместо + - %20 (код пробельного символа).
А вообще пробелы в данном случае зло! Используйте нижнее подчеркивание.
14. Telnet - 16 Июня, 2011 - 17:30:24 - перейти к сообщению
Посмотрел что когда вот так представлен scr всегда работает getimagesize
http://localhost/joomla/test/upl[dot][dot][dot]id%201106706[dot]gif

встроенной функции для перекодирования пробелов в %20, я так и не нашел, и решил просто менять пробелы на %20
PHP:
скопировать код в буфер обмена
  1. $this->imagename='http://localhost/joomla/test/upload/admin/'.str_replace ( ' ','%20', $imagename )


и все работает.
15. movEAX - 17 Июня, 2011 - 16:43:31 - перейти к сообщению
Telnet пишет:

и все работает.

Ну и ладушки ) А функция называлась rawurlencode

 

Powered by ExBB FM 1.0 RC1