У меня есть приложение php, которое сохраняет фотографии на сервере, а также сохраняет имена изображений в базе данных. Проблема в том, что имена картинок включают в себя путь/папку, в которой он был сохранен (например, 1220368812/chpk2198933_large-2.jpg), поэтому мне нужно шаблон str_replace, чтобы удалить «1220368812 /» и правильно сохранить имя изображения дБ. Также я был бы признателен, если вы пришлете мне хорошую ссылку, которая объяснит, как работают шаблоны str_replace или, по крайней мере, как работает шаблон, который вы используете.php str_replace pattern
ответ
Попробуйте
basename
- Возвращает имя файла из пути
Пример # 1 базовых() Пример
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
Там нет необходимости str_replace
что-либо, потому что basename
удалит часть пути. Также str_replace
не разрешает узоров. Все, что он делает, это заменить все вхождения строки поиска на строку замены. Замена на узоров делается с Regular Expressions, но здесь они также не нужны.
На самом деле pathinfo немного лучше. Это дает вам BASENAME и больше:
http://php.net/manual/en/function.pathinfo.php
<?php
$path_parts = pathinfo('/www/htdocs/index.html');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>
Приведенный выше пример выведет:
/www/htdocs
index.html
html
index
Если пользователю331071 необходимо получить больше информации, чем базовое имя (что-то не упоминается в OP), тогда 'pathinfo' может быть лучше (что в этом контексте« лучше »?). Но, чтобы получить только базовое имя файла, я бы пошел на предложение Гордона: только одна строка кода, из которой очень ясно, что она делает. Ваше предложение содержит дополнительную строку кода и использует поиск массива (гораздо менее выразительный, IMO). –
... Конечно, не знает, что 'pathinfo' существует, конечно! :) –
С basename() вы получаете только базовое имя и данные расширения. На основе OP требуется, используя функцию basename() для извлечения имени файла, у вас есть временное решение для расширения. pathinfo() также даст вам это. Это 1 остановка покупок. basename() - нет. – gurun8
- 1. PHP str_replace any number pattern
- 2. PHP str_replace
- 3. PHP str_replace
- 4. PHP - str_replace();
- 5. Игнорировать whitespace str_replace PHP
- 6. str_replace text with PHP
- 7. PHP str_replace CSV Content
- 8. Проблема переменной str_replace PHP
- 9. php str_replace question
- 10. php str_replace и объекты
- 11. Проблема str_replace в php
- 12. PHP str_replace "и"
- 13. PHP str_replace с
- 14. Удалить slash str_replace PHP
- 15. PHP str_replace не работает?
- 16. о функции PHP str_replace
- 17. PHP str_replace в цикле
- 18. str_replace PHP строку
- 19. php fopen, str_replace
- 20. str_replace PHP не работает
- 21. PHP str_replace для каждого
- 22. Исключения PHP str_replace
- 23. str_replace HTML с PHP
- 24. PHP str_replace Ошибка
- 25. PHP: str_replace multiple cases
- 26. PHP: str_replace не работает
- 27. PHP - str_replace не работает
- 28. PHP preg_match_all и str_replace
- 29. str_replace PHP не работает
- 30. PHP: str_replace() - игнорировать пробелы
ммм downvote? для чего? – Gordon
Наверняка вы уже привыкли к «проезжающим голосам» *? :) –