Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вОПРОС пРО оБРЕЗАНИЕ =)

381
05 января 2004 года
qik
116 / / 20.06.2000
у меня переменной $file присвоено значение имени файла в папке (01_blabla.jpg). Как мне обрезать 3 символа спереди и 4 символа сзади, чтоб полкчилось (blabla)?
1.9K
05 января 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by qik
у меня переменной $file присвоено значение имени файла в папке (01_blabla.jpg). Как мне обрезать 3 символа спереди и 4 символа сзади, чтоб полкчилось (blabla)?


Если именно 3 спереди и 4 сзади то substr но лучше описать регуляркой.
Что то типа:

 
Код:
$filename = "10_blalvdasdasla.jpg";
preg_match("/([^_]*)_([^.]*).(.*)/i", $filename,$include);
print_r($include);
283
05 января 2004 года
Alone
910 / / 20.11.2002
$a="01_blabla.jpg";
$a=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $a);
381
05 января 2004 года
qik
116 / / 20.06.2000
у меня такой скрипт:
Код:
<?php
if ($void = @opendir('/home/localhost/www/php/img/')) {
    while (false !== ($file = readdir($void))) {
        if ($file != "." && $file != "..") {
            echo "

<a href=\"$file\">$file</a></p>\n"
;
        }
    }
    closedir($void);
}
?>

так вот мне нужно просто обрезать 3 символа спереди и 4 сзади у $file.
я так и не понял как действует та регулярка, пробывал через substr - нифига не вышло.
1.9K
05 января 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by qik
я так и не понял как действует та регулярка, пробывал через substr - нифига не вышло.


Вот с этого места по подробней :)
Что конкретно не сработало с substr??
Регулярка простая, берет и выкусывает всё, что между *_ и .*
Лучше используй продвинутый вариант от Alone.
С ней что не понятно?

381
05 января 2004 года
qik
116 / / 20.06.2000
Что конкретно не сработало с substr??
все ясно - разобрался:
Код:
<?php
//Error_Reporting(E_ALL & ~E_NOTICE);

if ($void = @opendir('/home/localhost/www/php/img/'))
  {
while (false !== ($fil = readdir($void)))
  {
if ($fil != "." && $fil != "..")
$file=substr($fil, 3, -4);
  {
echo "

<a href=\"$fil\">$file</a></p>\n"
;
  }
  }
closedir($void);
  }
?>

Регулярка простая, берет и выкусывает всё, что между *_ и .*
в мануале смотрел - нифига не ясно =(
не ясен принцип, да и синтаксис мутный
Лучше используй продвинутый вариант от Alone.ok. а чем он лучше и как его понять? 8)
1.9K
05 января 2004 года
HabaHaba
172 / / 24.12.2003
1. Чем, в твоём случае, плох substr:
"Сломается", если файл будет с расширением jpeg вместо jpg или если файлов будет много и первая циферь будет не 10 а 1000.
2. В php-шном мануале не нужно ничего смотреть про регулярные выражения. Сначала их нужно понять концептуально, а потом уже смотреть их применение.
Что бы понять реги, нужно поискать Орейлевскую книгу "Регулярные выражения" (Regular Expressions) -- ничего лучше не видел. А для самого начала можно почитать Яндекс :)
3. Регулярка от Alone просто более грамотная чем моя. Если захочет её описать -- сам опишет :)

Вообще, они (реги) очень полезная штука. Главное, один раз разобраться а потом уже пойдет -- жить без них не сможешь :)
381
05 января 2004 года
qik
116 / / 20.06.2000
все это хорошо, но не конструктивно =(
1.9K
05 января 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by qik
все это хорошо, но не конструктивно =(


Как сие понимать? Что неконструктивно?

381
05 января 2004 года
qik
116 / / 20.06.2000
Цитата:
Originally posted by HabaHaba

Как сие понимать? Что неконструктивно?


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

 
Код:
$a="01_blabla.jpg";
$a=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $a);

так и не помог разобраться, хотя это конечно же к Алону.
1.9K
06 января 2004 года
HabaHaba
172 / / 24.12.2003
Цитата:
Originally posted by qik

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


Ок, персонально для тебя больше стараться не буду.
RTFM.

283
06 января 2004 года
Alone
910 / / 20.11.2002
2qik
немного уважения к тем людям которые тебе хотят помоч...
поповоду моей регулярки она мало отличается от варианта HabaHaba за исключением некоторых нюансов...
насчет регуляки ищи здесь:http://forums.webscript.ru/showthread.php?s=&threadid=13780&msgnum=2
381
06 января 2004 года
qik
116 / / 20.06.2000
2Alone
спасибо, рульная ссылка, вот видишь ты поступил конструктивно.
2HabaHaba
да не обижайся ты, я же не хотел тебя обидеть, просто я не так выразился. кароче без обид. извенини если что.
381
07 января 2004 года
qik
116 / / 20.06.2000
вот че я наковырял, поправьте если че не так.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
замена текста по регулярному выражению

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
ищем вначале строки.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
все, кроме "_".

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
этот момент не особо ясен, ведь "*" показывает, что символ может как
отсутствовать так и присутствовать в любых кол-вах, а "?" показывает
что, символ может отсутствовать, так и присутствовать, но повториться
не более одного раза, и это все дело относится к символу "_".
по моему хватит просто "?".

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
это новое регул. выраж., то что между '(' и ')'.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
не очень ясно зачем икранирована '.', ведь без '\' она рассматревается
как любой символ, а с ним просто как символ точки. но с другой стороны
'\.' находится внутри '[' и ']', а внутри их все метасимволы работают,
но является ли '\.' метасимволом? если да, то почему обязательно писать
'\'?

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
просто точка.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
любой символ.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
я так понимаю что это этносится к '.'(любой символ), - он должен быть
и может повторятся.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
тоже относится к '.'(любой символ), - искомый текст должен быть в конце

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
модиф. - нет разницы какйо регистр.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
все найденное по паттерну заменяется на '\\1'
это мне не ясно.

$file=preg_replace ("/^[^_]*?_([^\.]*)\..+$/i", "\\1", $text);
параметр ассоциированный с текстом в котором идет поиск.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог