[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: форма type="file"
beby11
Почему когда отправляешь php форму <input type="file"> переменная равна названию картинки.(пример: 27.jpg)
a, когда ajax форму <input type="file"> переменная равна (пример: C:\fakepath\27.jpg), что нужно сделать что бы C:\fakepath\ не было.



Спустя 4 минуты, 46 секунд (21.10.2011 - 12:14) Игорь_Vasinsky написал(а):
реальный путь файла на компе юзера узнать нельзя. это сделано в целях безопастности.

предосмотр загрузки чтоли делаешь?


Спустя 1 минута, 33 секунды (21.10.2011 - 12:16) m4a1fox написал(а):
Ну как вариант регуляркой можно! О! Ща потренируюсь!

Спустя 11 минут, 57 секунд (21.10.2011 - 12:28) m4a1fox написал(а):

function PregReg($str){
$reg = "#[0-9]+\.jpg#u";
preg_match($reg, $str, $out);
return $out[0];
}
$str = 'C:\fak\epath\27.jpg';

echo PregReg($str);

Иха..... моя личная первая регулярка в кот. я понимаю что происходит! :)

Спустя 5 минут, 41 секунда (21.10.2011 - 12:34) Игорь_Vasinsky написал(а):

я не допонял.. думал он реальный путь вычесляет.

Спустя 3 минуты, 12 секунд (21.10.2011 - 12:37) m4a1fox написал(а):
Игорь_Vasinsky
Цитата
я не допонял.. думал он реальный путь вычесляет.

Да черт знает! Вроде просил избавиться в пути от диска и папки... вот тут
Цитата
что нужно сделать что бы C:\fakepath\ не было.


P.S. Winston, над регуляркой громко не ржать!

Спустя 2 минуты, 11 секунд (21.10.2011 - 12:39) Winston написал(а):
m4a1fox
Цитата (m4a1fox @ 21.10.2011 - 12:28)
"#[0-9]+\.jpg#u"

О границах помнишь? smile.gif
Твоя регулярка пропустит вот такое название C:\fak\epath\27.jpg.blabla
Потому лучше укажи привяжи расширение к концу строки, с помощью $ и мод. u здесь не нужен. Символьный класс [0-9] можно заменить метасимволом \d+

Спустя 3 минуты, 37 секунд (21.10.2011 - 12:43) m4a1fox написал(а):
Winston
Цитата
Потому лучше укажи привяжи расширение к концу строки, с помощью $ и мод. u здесь не нужен. Символьный класс [0-9] можно заменить метасимволом \d+

Черт! Надо было не говорить правильный ответ! А сказать что вот это пропустит - как решить???? Я бы подзапарился!!!! Но все равно спасибо - в дальнейшем буду внимателен!

Winston, вот так
    function PregReg($str){
$reg = "#[0-9]+\.jpg#u";
preg_match($reg, $str, $out);
return $out[0];
}
$str = 'C:\fak\epath\27.jpg.blabla';

echo PregReg($str);

Выводит только вот это
27.jpg 

Где я ошибся? :(

Спустя 12 секунд (21.10.2011 - 12:43) Winston написал(а):
Цитата (beby11 @ 21.10.2011 - 12:10)
что нужно сделать что бы C:\fakepath\ не было.

Интересно, что ты потом будешь передавать ф-ии move_uploaded_file ? smile.gif если у тебя останется, только имя файла, а оно лежит не в том каталоге, что и файл ? smile.gif

Спустя 2 минуты, 53 секунды (21.10.2011 - 12:46) m4a1fox написал(а):
Winston
Цитата
Интересно, что ты потом будешь передавать ф-ии move_uploaded_file ? smile.gif если у тебя останется, только имя файла, а оно лежит не в том каталоге, что и файл ?

Ну это уже к ТС! Мне регулярку было интересно написать! smile.gif

Спустя 4 минуты, 52 секунды (21.10.2011 - 12:51) Игорь_Vasinsky написал(а):
регулярка по определённые имена файлов

цифры.jpg

Winston
да не.. он видимо для мониторинга имени делает.. как в Хроме

Спустя 6 минут, 53 секунды (21.10.2011 - 12:57) m4a1fox написал(а):
Winston,
function PregReg($str){
$reg = "#\d+\.jpg$#";
preg_match($reg, $str, $out);
return $out;
}
$str = 'C:\fak\epath\27.jpg.blabla';

print_r(PregReg($str));

Где я дурак? Массив - пуст!

Спустя 1 минута (21.10.2011 - 12:58) Winston написал(а):
Теперь правильно.



Спустя 41 секунда Winston написал(а):
Цитата (m4a1fox @ 21.10.2011 - 12:57)
Где я дурак? Массив - пуст!

27.jpg.blabla не проходит, как и надо smile.gif

Спустя 2 минуты, 14 секунд (21.10.2011 - 13:01) m4a1fox написал(а):
Winston
Цитата
27.jpg.blabla не проходит, как и надо

А! НЕ ПРОХОДИТ! ТО ЕСТЬ FALSE. Понятно! Но я думал по другому, думал, что регулярка вырежит, то что в паттерне....

Учитель, оцени
function PregReg($str){
$reg = "#\d+\.jpg$#";
preg_match($reg, $str, $out);
if(!empty($out)){
return $out[0];
}else{
return 'не получилось!';
}

}

$str = 'C:\fak\epath\27.jpg';

echo PregReg($str);

:)

Спустя 5 минут, 56 секунд (21.10.2011 - 13:07) Игорь_Vasinsky написал(а):
#(\d+\.jpg)$#

Спустя 1 минута, 50 секунд (21.10.2011 - 13:08) Winston написал(а):
Цитата (m4a1fox @ 21.10.2011 - 13:01)
if(!empty($out)){
            return $out[0];   
        }else{
            return 'не получилось!';
        }

:)
return (!empty($out)) ? $out[0] : 'не получилось!';

Цитата (Игорь_Vasinsky @ 21.10.2011 - 13:07)
#(\d+\.jpg)$#

Зачем ?

Спустя 1 минута, 43 секунды (21.10.2011 - 13:10) m4a1fox написал(а):
Игорь_Vasinsky
Ага! Ясно! Уловил! Только подзабыл как это называется!
Итак, для закрепления:
[...] - класс поиска
() - ээээ ну может некая область конкретного поиска. Ща гляну! А! Начало подмаски поиска и ее конец. Теперь бы разницу на практике почувствовать!

Спустя 1 минута, 28 секунд (21.10.2011 - 13:12) m4a1fox написал(а):
Winston
Цитата
return (!empty($out)) ? $out[0] : 'не получилось!';

Эво как! В ретерн тернарный можно засунуть! Так! Тоже запомнил! Блин, надо на перекур, разложить в голове все по полочкам!

И да, как вернее, то есть в чем конкретная разница?
Цитата
Цитата (Игорь_Vasinsky @ 21.10.2011 - 13:07)
#(\d+\.jpg)$#

Зачем ?

Спустя 3 секунды (21.10.2011 - 13:12) Winston написал(а):
Игорь_Vasinsky
Зачем здесь скобки? Чтобы еще один элемент массива появился ? smile.gif



Спустя 39 секунд Winston написал(а):
Цитата (m4a1fox @ 21.10.2011 - 13:12)
В ретерн тернарный можно засунуть

Никто же не запрещает smile.gif

Спустя 1 минута, 26 секунд (21.10.2011 - 13:13) m4a1fox написал(а):
Winston
Цитата
Никто же не запрещает

Логично, если не запрещено, то разрешено! smile.gif

Спустя 2 минуты, 26 секунд (21.10.2011 - 13:16) m4a1fox написал(а):
И все же Winston, если вот так сделать,

function PregReg($str){
$reg = "#\d+\.jpg$#";
preg_match($reg, $str, $out);

return (!empty($out))?$out[0]:'Не получилось';

}
$str = 'C:\fak\epath\27.jpg.blabla';

echo PregReg($str);

Как вырезать и показать кусок, кот в регулярке?

Спустя 1 минута, 4 секунды (21.10.2011 - 13:17) Игорь_Vasinsky написал(а):
ну m4a1fox сказал что массив пуст.. поэтому я предположил что нужно выделить скобками biggrin.gif

Спустя 48 секунд (21.10.2011 - 13:17) Игорь_Vasinsky написал(а):
m4a1fox

он же в $out[0] должен быть

Спустя 1 минута, 43 секунды (21.10.2011 - 13:19) m4a1fox написал(а):
Игорь_Vasinsky, ну как бы да, я так думал, но Winston пояснил, что если условию не удовлетворяет то значит - false - то есть ничего не будет! Попробуй запустить у себя и со строкой поиграться!!!!!

Спустя 1 минута, 10 секунд (21.10.2011 - 13:20) Winston написал(а):
#[0-9]+\.jpg(\..*)?$#

Если после расширение будет еще, что-то то оно будет сохранено в массиве out[1]
А если так
#([0-9]+\.jpg)(\..*)?$#

То в out[0] - все, что было найдено
out[1] - имя с расширением
out[2] - белеберда после расширения, если она есть в строке.



Спустя 1 минута, 27 секунд Winston написал(а):
Цитата (Игорь_Vasinsky @ 21.10.2011 - 13:17)
ну m4a1fox сказал что массив пуст.. поэтому я предположил что нужно выделить скобками

Не поможет, если поиск не увенчался успехом.



Спустя 2 минуты, 16 секунд Winston написал(а):
От вопроса ТС мы перешли к обучению регулярок biggrin.gif

Спустя 20 минут, 58 секунд (21.10.2011 - 13:41) m4a1fox написал(а):
Winston
Цитата
От вопроса ТС мы перешли к обучению регулярок

Как я вижу, ТС не против smile.gif
О наболевшем! smile.gif
Цитата
#[0-9]+\.jpg(\..*)?$#


Если после расширение будет еще, что-то то оно будет сохранено в массиве out[1]
А если так

#([0-9]+\.jpg)(\..*)?$#


То в out[0] - все, что было найдено
out[1] - имя с расширением
out[2] - белеберда после расширения, если она есть в строке.

Да, это уяснил, то есть по сути скобки это $value[n] массива... $out[n] А если скобок нет, то... наверно это $out[0] => $value....


Winston
Цитата
Как вырезать и показать кусок, кот в регулярке?

Спустя 2 минуты, 58 секунд (21.10.2011 - 13:44) Winston написал(а):
Первая скобка сохраняет значения в $out[1] вторая в $out[2] и т.д.
Цитата (m4a1fox @ 21.10.2011 - 13:41)
Как вырезать и показать кусок, кот в регулярке?

Я в прошлом посте показал.
Это ?
#[0-9]+\.jpg(\..*)?$#

Спустя 8 минут, 10 секунд (21.10.2011 - 13:52) m4a1fox написал(а):
Winston
Ага! То есть если так

function PregReg($str){
$reg = "#[0-9]+\.jpg(\..*)?$#";
preg_match($reg, $str, $out);

return (!empty($out))?$out[0]:'Не получилось';

}
$str = 'C:\fak\epath\27.jpg.blablabla';

echo PregReg($str);

То результат нам возвращается такой

27.jpg.blablabla


Но как составить регулярку, что бы результат был вот такой

27.jpg


Спустя 3 минуты, 48 секунд (21.10.2011 - 13:56) Winston написал(а):
Смотри внимательней на примеры. ТЫЦ
Возвращай массив, чтобы лучше понять, что в нем находится и как работает.
return (!empty($out))?$out:'Не получилось';

print_r(PregReg($str););

Спустя 5 минут, 23 секунды (21.10.2011 - 14:02) m4a1fox написал(а):
Winston
Ага! Есть ответ
Array ( [0] => 27.jpg.blablabla [1] => 27.jpg [2] => .blablabla ) 

Теперь понятно!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.