Forum Webscript.Ru

Программирование => PHP => Тема начата: myname от 24 Мая 2003, 11:32:12

Название: $string
Отправлено: myname от 24 Мая 2003, 11:32:12
Какой функцией обрезать последние символы (.mp3) со слова? Допустим Apollo 440.mp3
Название: $string
Отправлено: USE от 24 Мая 2003, 11:43:44
substr
Название: $string
Отправлено: myname от 24 Мая 2003, 11:56:25
(substr($fupload_name, ".mp3")) будет правильно?
Название: $string
Отправлено: USE от 24 Мая 2003, 12:27:16
$name = substr($fupload_name, 0, -4);
Название: $string
Отправлено: myname от 24 Мая 2003, 13:18:26
Работает. Спасибо.
[OFF]
Название: $string
Отправлено: Britva от 24 Мая 2003, 14:38:30
хм. не совсем верно. substr может не то что нужно вернуть, лучше использовать что-нибудь типа pathinfo() или мож еще есть какие-нить функции для парсинга пути, уже не помню. RTFM.
Название: $string
Отправлено: Tronyx от 25 Мая 2003, 09:38:59
Цитировать
Britva:
substr может не то что нужно вернуть

Интересно это КАК?
Название: $string
Отправлено: ThE0ReTiC от 25 Мая 2003, 10:02:59
Цитировать
Tronyx:
Интересно это КАК?

Это когда имя файла не в формате 8.3
Название: $string
Отправлено: Меняздесьдавнонет от 25 Мая 2003, 11:42:39
ThE0ReTiC
а какая разница, сколько там слева - 8 или 32?
справа-то, вроде, как, 3 подразумевается?
Название: $string
Отправлено: myname от 25 Мая 2003, 12:16:30
У меня такой вариант, может он не совсем корректный, но работает как надо. Может что-то надо изменить для полной правильности?


if ($post=="yes") {

include("config-inc.php");

//обрезаем последние 4 символа
$description = substr($fupload_name, 0, -4);

/*обрезаем первые 4 символа
$description = substr($fupload_name, +4, 0);
*/

if (($fupload_type=="application/mp3") || (strstr($fupload_name, ".mp3")))  {

 $query = "INSERT INTO $Database_table (path,description,date) VALUES (\'$path\',\'$description\',\'$date\')";
 mysql_query($query);

if ($fupload_type=="application/mp3") { $file_name= $fupload_name; }
if (strstr($fupload_name, ".mp3")) { $file_name=$fupload_name; }

copy ($fupload, "$home_path/$file_name") or die ("Ошибка! Невозможно сохранить файл.");

 $id_num=mysql_insert_id();
 $query = "UPDATE $Database_table SET path=\'$file_name\' WHERE id=\'$id_num\'";
 $result = mysql_query($query);
 
 }
 }
?>
Название: $string
Отправлено: ThE0ReTiC от 25 Мая 2003, 12:38:05
RomikChef
разницы скока слева никакой.
А что, если справа будет не 3 ?
Название: $string
Отправлено: FreeSpace от 25 Мая 2003, 19:03:23
ThE0ReTiC
Так просили же именно .mp3 обрезать...
Название: $string
Отправлено: ThE0ReTiC от 25 Мая 2003, 20:08:33
FreeSpace
Так надо стараться думать шире :)
Название: $string
Отправлено: yUAC от 25 Мая 2003, 23:05:41

$ext=".mp3";
substr($fupload_name, 0, -strlen($ext));


вот так будет работать с любым расширением, которое указано в переменной $ext...
Название: $string
Отправлено: FreeSpace от 26 Мая 2003, 00:52:08
ThE0ReTiC
Стараюсь :)
Хоть выше уже есть почти универсальный пример, пихну свою альтернативу:
$tmp = explode(".", $filename);
array_pop($tmp);
$name = implode(".", $tmp);
unset($tmp);
Название: $string
Отправлено: Xander от 26 Мая 2003, 01:12:55
yUAC
basename
(PHP 3 <= 3.0.18, PHP 4 >= 4.0.0)

basename --  Returns filename component of path
Description

string basename (string path [, string suffix])


Given a string containing a path to a file, this function will return the base name of the file. If the filename ends in suffix this will also be cut off.

On Windows, both slash (/) and backslash (\\) are used as path separator character. In other environments, it is the forward slash (/).

Лисапед, однако, изобрел.
Название: $string
Отправлено: myname от 26 Мая 2003, 06:00:04
Как вырезать только первый знак? Я так понял, что надо сначала определить сколько знаков в строке, а потом уже выбрать первый из неё? Разъясните пожалуйста.
Название: $string
Отправлено: ThE0ReTiC от 26 Мая 2003, 10:14:02
myname
$first_char = substr($string,0,1)
почитай-таки мануал :)
Название: $string
Отправлено: Меняздесьдавнонет от 26 Мая 2003, 10:54:42
Цитировать
FreeSpace:
$tmp = explode(".", $filename);
array_pop($tmp);
$name = implode(".", $tmp);
unset($tmp);

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

задача решается в одну строчку с использованием srrpos
именно это имел в виду теоретик.

Xander
Этот лисапед глюкал в каких-то версиях.
Название: $string
Отправлено: Maniac от 26 Мая 2003, 22:12:19
Кстати, а чем не вариант preg_match(\'/(.*?)\\.+?$/si\',$filename,$res); $path=$res[1]; ?
Название: $string
Отправлено: myname от 26 Мая 2003, 22:41:34
Зачем так много всего, если хватает $simbol = substr("".$song[artist]."",0,1); ?
Название: $string
Отправлено: Меняздесьдавнонет от 27 Мая 2003, 10:28:23
myname
А вот эти рюшечки - "". и ."" у тебя для красоты?