Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php get filename

basename

(PHP 4, PHP 5, PHP 7)

basename — Возвращает последний компонент имени из указанного пути

Описание

При передаче строки с путем к файлу или каталогу, данная функция вернет последний компонент имени из данного пути.

basename() наивно оперирует исключительно исходной строкой и не учитывает реальную файловую систему или компоненты пути типа «..«.

basename() учитывает настройки локали, поэтому для корректной обработки пути с многобайтными символами должна быть установлена соответствующая локаль с помощью функции setlocale() .

Список параметров

На платформах Windows в качестве разделителей имен директорий используются оба слеша (прямой / и обратный ). В других операционных системах разделителем служит прямой слеш (/).

Если компонент имени заканчивается на suffix , то он также будет отброшен.

Возвращаемые значения

Возвращает базовое имя указанного пути path .

Примеры

Пример #1 Пример использования функции basename()

Результат выполнения данного примера:

Смотрите также

  • dirname() — Возвращает имя родительского каталога из указанного пути
  • pathinfo() — Возвращает информацию о пути к файлу

User Contributed Notes 30 notes

Support of the $suffix parameter has changed between PHP4 and PHP5:
in PHP4, $suffix is removed first, and then the core basename is applied.
conversely, in PHP5, $suffix is removed AFTER applying core basename.

Example:
= «path/to/file.xml#xpointer(/Texture)» ;
echo basename ( $file , «.xml#xpointer(/Texture)» );
?>

Result in PHP4: file
Result in PHP5: Texture)

It’s a shame, that for a 20 years of development we don’t have mb_basename() yet!

// works both in windows and unix
function mb_basename($path) <
if (preg_match(‘@^.*[\\/]([^\\/]+)$@s’, $path, $matches)) <
return $matches[1];
> else if (preg_match(‘@^([^\\/]+)$@s’, $path, $matches)) <
return $matches[1];
>
return »;
>

There is only one variant that works in my case for my Russian UTF-8 letters:

function mb_basename ( $file )
<
return end ( explode ( ‘/’ , $file ));
>
> It is intented for UNIX servers

If your path has a query string appended, and if the query string contains a «/» character, then the suggestions for extracting the filename offered below don’t work.

Then both the php basename() function, and also
the $_SERVER[QUERY_STRING] variables get confused.

In such a case, use:

Here is a quick way of fetching only the filename (without extension) regardless of what suffix the file has.

// your file
$file = ‘image.jpg’ ;

$info = pathinfo ( $file );
$file_name = basename ( $file , ‘.’ . $info [ ‘extension’ ]);

echo $file_name ; // outputs ‘image’

It might be useful to have a version of the function basename working with arrays too.

function a_basename ( $file , $exts )
<
$onlyfilename = end ( explode ( «/» , $file ) );

if( is_string ( $exts ) )
<
if ( strpos ( $onlyfilename , $exts , 0 ) !== false )
$onlyfilename = str_replace ( $exts , «» , $onlyfilename );
>
else if ( is_array ( $exts ) )
<
// works with PHP version foreach( $exts as $KEY => $ext )
<
$onlyfilename = str_replace ( $ext , «» , $onlyfilename );
>
>

Additional note to Anonymous’s mb_basename() solution: get rid of trailing slashes/backslashes!

function mb_basename ( $path ) <
if ( preg_match ( ‘@^.*[\\/]([^\\/]+)([\\/]+)?$@s’ , $path , $matches )) <
return $matches [ 1 ];
> else if ( preg_match ( ‘@^([^\\/]+)([\\/]+)?$@s’ , $path , $matches )) <
return $matches [ 1 ];
>
return » ;
>

echo mb_basename ( «/etc//» ); # «etc»
?>

A simple way to return the current directory:
$cur_dir = basename(dirname($_SERVER[PHP_SELF]))

since basename always treats a path as a path to a file, e.g.

/var/www/site/foo/ indicates /var/www/site as the path to file
foo

There is a real problem when using this function on *nix servers, since it does not handle Windows paths (using the as a separator). Why would this be an issue on *nix servers? What if you need to handle file uploads from MS IE? In fact, the manual section «Handling file uploads» uses basename() in an example, but this will NOT extract the file name from a Windows path such as C:My DocumentsMy Namefilename.ext. After much frustrated coding, here is how I handled it (might not be the best, but it works):

= basename ( $filen );
if ( strpos ( $newfile , ‘\’ ) !== false ) <
$tmp = preg_split ( «[\]» , $newfile );
$newfile = $tmp [ count ( $tmp ) — 1 ];
>
?>

$newfile will now contain only the file name and extension, even if the POSTed file name included a full Windows path.

If you want the current path where youre file is and not the full path then use this 🙂

echo( ‘dir = ‘ . basename ( dirname ( $_SERVER [ ‘PHP_SELF’ ]), «/» ));
// retuns the name of current used directory
?>

Example:

www dir: domain.com/temp/2005/january/t1.php

Читать еще:  Как снять защиту с вордовского документа

echo( ‘dirname
‘ . dirname ( $_SERVER [ ‘PHP_SELF’ ]). ‘

‘ );
// returns: /temp/2005/january
?>

echo( ‘file = ‘ . basename ( $PHP_SELF , «.php» ));
// returns: t1
?>

if you combine these two you get this
echo( ‘dir = ‘ . basename ( dirname ( $_SERVER [ ‘PHP_SELF’ ]), «/» ));
// returns: january
?>

And for the full path use this
echo( ‘ PHP_SELF
‘ . $_SERVER [ ‘PHP_SELF’ ]. ‘

Exmaple for exploding 😉 the filename to an array

How to Get All File Names for a Directory with PHP

I fought with this for a while. I had to use PHP to return all file names in a directory with their respective size and types. I also had to return only files and not directories, but this guide will show you how to do both just in case you might need directories too.

Here is what the following code will return for a directory with three files in it:

Now here’s the code that finally worked for me when I put the code in a file named get_file_names.php in the html directory which also held the “uploads” directory which it reads from :

//get the lastest file uploaded in uploads/
$path = “uploads”;
$d = dir($path);
while (false !== ($entry = $d->read())) <
$filepath = “<$path>/<$entry>”;
//Check whether the entry is a file etc.:
if(is_file($filepath)) <
$latest_filename = $entry;
$file_type = filetype($filepath);//get file type.
$file_size = filesize($filepath);//get file size.
echo “$latest_filename
Type: $file_type
Size: $file_size ”;
>//end if is file etc.
>//end while going over files in uploads dir.

Wrap that in PHP tags and you got your get_file_names.php script.

How to Get Both Files and Directories:

To get both files and directories, the script is even simpler, simply take out the last if statement so your final code looks like:

//get ELEMENTS in uploads/
$path = “uploads”;
$d = dir($path);
while (false !== ($entry = $d->read())) <
$filepath = “<$path>/<$entry>”;
$latest_ctime = filectime($filepath);//like: 1402783996 that is timestamp so highest is latest.
$latest_filename = $entry;
$file_type = filetype($filepath);//get file type.
$file_size = filesize($filepath);//get file size.
echo “$latest_filename
Type: $file_type
Size: $file_size ”;
>//end while going over files AND DIRECTORIES in uploads dir.

Running the code above will get the following results:

How to show Files and only Directories with Names and not dot or dotdot:

Notice the “.” and the “..” those are directories in which you may not wish to show that represent the current directory and the parent directory respectively. To get redi of the dot and the dotdot, simply check for them like in the following code example:

//get the lastest file uploaded in uploads/
$path = “uploads”;
$d = dir($path);
while (false !== ($entry = $d->read())) <
$filepath = “<$path>/<$entry>”;
//Check whether the entry is a file etc.:
$latest_filename = $entry;
if($latest_filename != “.” && $latest_filename != “..”) <
$latest_filename = $entry;
$file_type = filetype($filepath);//get file type.
$file_size = filesize($filepath);//get file size.
echo “$latest_filename
Type: $file_type
Size: $file_size ”;
>//end if is file etc.
>//end while going over files in excel_uploads dir.

The above code returns:

How to Show Only Certain File Types:

In the next code snippet, I show you how to only show .html files from a specific directory. Here is that PHP code:

//path to directory to scan
$directory = “uploads/”;

//get all files files with a .html extension.
$files = glob($directory . “*.html”);

//print each file name
foreach($files as $filename)
<
echo $filename;
echo “
”;
>

Php get filename

If you are looking for how to get filename without extension then there is no need to do any coding or any logic for getting filename without extension simply you can use the php inbuilt function “pathinfo”.This function will return array with file info like extension,Filename without extension,Basename etc.For more info please refer bellow given example.

will output like

Share this:

Leave a Reply Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

NEWS PREVIEW

Top Posts & Pages

I13 Web Solution

Google Plus

Subscribe to our newsletter

Categories

This website uses cookies to provide you with the best browsing experience.

Find out more or adjust your settings .

  • Privacy Overview
  • Strictly Necessary Cookies
  • Cookie Policy

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Читать еще:  Как защитить отдельные ячейки

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.

If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.

What we Collect

  • name
  • contact information including email address
  • demographic information such as postcode, preferences and interests
  • other information relevant to customer surveys and/or offers

For the exhaustive list of cookies we collect see the List of cookies we collect section.

What we do with the information we gather

We require this information to understand your needs and provide you with a better service, and in particular for the following reasons:

  • Internal record keeping.
  • We may use the information to improve our products and services.
  • We may periodically send promotional emails about new products, special offers or other information which we think you may find interesting using the email address which you have provided.
  • From time to time, we may also use your information to contact you for market research purposes. We may contact you by email, phone, fax or mail. We may use the information to customise the website according to your interests.

Security

We are committed to ensuring that your information is secure. In order to prevent unauthorised access or disclosure, we have put in place suitable physical, electronic and managerial procedures to safeguard and secure the information we collect online.

How we use cookies

A cookie is a small file which asks permission to be placed on your computer’s hard drive. Once you agree, the file is added and the cookie helps analyse web traffic or lets you know when you visit a particular site. Cookies allow web applications to respond to you as an individual. The web application can tailor its operations to your needs, likes and dislikes by gathering and remembering information about your preferences. We use traffic log cookies to identify which pages are being used. This helps us analyse data about web page traffic and improve our website in order to tailor it to customer needs. We only use this information for statistical analysis purposes and then the data is removed from the system. Overall, cookies help us provide you with a better website, by enabling us to monitor which pages you find useful and which you do not. A cookie in no way gives us access to your computer or any information about you, other than the data you choose to share with us. You can choose to accept or decline cookies. Most web browsers automatically accept cookies, but you can usually modify your browser setting to decline cookies if you prefer. This may prevent you from taking full advantage of the website.

Links to other websites

Our website may contain links to other websites of interest. However, once you have used these links to leave our site, you should note that we do not have any control over that other website. Therefore, we cannot be responsible for the protection and privacy of any information which you provide whilst visiting such sites and such sites are not governed by this privacy statement. You should exercise caution and look at the privacy statement applicable to the website in question.

Controlling your personal information

You may choose to restrict the collection or use of your personal information in the following ways:

  • whenever you are asked to fill in a form on the website, look for the box that you can click to indicate that you do not want the information to be used by anybody for direct marketing purposes
  • if you have previously agreed to us using your personal information for direct marketing purposes, you may change your mind at any time by writing to or emailing us at support@i13websolution.com
Читать еще:  Php округление до целого числа

We will not sell, distribute or lease your personal information to third parties unless we have your permission or are required by law to do so. We may use your personal information to send you promotional information about third parties which we think you may find interesting if you tell us that you wish this to happen. You may request details of personal information which we hold about you under the Data Protection Act 1998. A small fee will be payable. If you would like a copy of the information held on you please write to I Thirteen Web Solution,Surat India . If you believe that any information we are holding on you is incorrect or incomplete, please write to or email us as soon as possible, at the above address. We will promptly correct any information found to be incorrect.

PHP: знакомимся с функцией file_get_contents()

Функция PHP file get ontents() используется для считывания файла в строку. Если применять ее для дистанционного считывания, не забудьте, что любой URL-адрес со специальными символами должен быть правильно закодирован при помощи urlencode() .

Пример использования file_get_contents() :

Возвращаемое значение

Функция возвращает считанные данные или вернет FALSE при ошибке.

Дополнительная информация

file_get_contents() должна стать приоритетной функцией для считывания содержимого файла в строку. Она задействует метод отображения файла в память .

Одно из основных отличий между функциями file() и file_get_contents() заключается в том, что последняя считывает содержимое в строку, начиная с указанного параметра offset , и до maxlen . А file() считывает содержимое в массив.

Версии и история изменений в PHP

Функция file get contents PHP работает с PHP 4 >= 4.3.0, PHP 5, PHP 7 .

Параметр offset появился в PHP 5.1 .
Параметр maxlen также появился в PHP 5.1 .

Связанные функции

Вам также следует знать о следующих PHP-функциях :

file() — считывает весь файл в массив;
fgets() — считывает строку из указанного файла;
fread() — производит бинарно-безопасное чтение файла;
readfile() — выводит файл;
file_put_contents() — записывает строку в файл;
stream_get_contents() — считывает остаток потока в строку;
stream_context_create() — создаёт контекст потока.

Параметры

Параметр filename функции PHP file get contents используется для указания имени файла. Это обязательный параметр.

Параметр use_include_path используется для указания, может ли константа FILE_USE_INCLUDE_PATH ( из файла php.ini ) использоваться для запуска поиска include path . Это необязательный параметр.

Параметр context используется для указания контекста, созданного функцией stream_context_create() . Если не нужен произвольный контекст, можно опустить этот параметр при помощи NULL . Это необязательный параметр.

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

Не забудьте, что поиск ( offset ) не поддерживается при дистанционной работе с файлами. В редких случаях при работе с нелокальными файлами могут сработать небольшие смещения, но в этом случае результат работы непредсказуем, так как работа производится в потоке в буфере.

Параметр maxlen используется для указания максимальной длины данных, которые необходимо считать. По умолчанию считывание производится до конца файла. Это необязательный параметр.

Наглядные примеры

file get contents PHP пример использования :

Приведённый выше код позволяет получить и вывести исходный код страницы указанного сайта. В следующем примере показано, как считать фрагмент данных файла:

В следующем примере показано, как использовать контекст потока для дистанционного открытия файла:

Дополнительные советы

  1. В функции file get contents используется POST . Для этого сначала нужно создать контекст:
  1. Можно использовать поточный контекст для установки правильного тайм-аута, не связываясь со значениями php.ini :
  1. В некоторых случаях использования функции PHP file get contents http возникает проблема с кодировкой UTF-8 при считывании URL-адреса с кодировкой отличной от UTF-8 . Это происходит потому, что по умолчанию используется UTF-8 . Приведенная ниже функция решает эту проблему:
  1. Кажется, file ищет файл внутри текущей директории, перед тем как обратиться к include path , даже если установлен флаг FILE_USE_INCLUDE_PATH .

Вроде бы сказано, что include_path – первая локация, в которой должен осуществляться поиск. Но я несколько раз бывал в ситуации, когда директория, содержащая включение файла, оказывалась первой в порядке поиска.

Данная публикация представляет собой перевод статьи « PHP file_get_contents() Function » , подготовленной дружной командой проекта Интернет-технологии.ру

Ссылка на основную публикацию
Adblock
detector