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" |
О границах помнишь?

Твоя регулярка пропустит вот такое название 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 ?


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

Спустя 4 минуты, 52 секунды (21.10.2011 - 12:51) Игорь_Vasinsky написал(а):
регулярка по определённые имена файлов
цифры.jpg
Winston
да не.. он видимо для мониторинга имени делает.. как в Хроме
цифры.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 написал(а):
Спустя 41 секунда Winston написал(а):
Цитата (m4a1fox @ 21.10.2011 - 12:57) |
Где я дурак? Массив - пуст! |
27.jpg.blabla не проходит, как и надо

Спустя 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
Зачем здесь скобки? Чтобы еще один элемент массива появился ?
Спустя 39 секунд Winston написал(а):
Зачем здесь скобки? Чтобы еще один элемент массива появился ?

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

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

Спустя 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 сказал что массив пуст.. поэтому я предположил что нужно выделить скобками

Спустя 48 секунд (21.10.2011 - 13:17) Игорь_Vasinsky написал(а):
m4a1fox
он же в $out[0] должен быть
он же в $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 написал(а):
От вопроса ТС мы перешли к обучению регулярок

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

О наболевшем!

Цитата |
#[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 )
Теперь понятно!