Использование (preg_replace), и я думаю, что мой синтаксис немного отличается. Мне нужно выйти из чего-то или другого

Я пытаюсь использовать (preg_replace), чтобы удалить значение каталога из $outputpid и сохранить его в $nofolder. По какой-то причине $nofolder возвращает NULL. Я забыл выйти из чего-то или это что-то еще?

$pidnum = '710';  
foreach (glob("/var/www/secure/catalog/current/programs/transfer/*.pdf") as $filename) {
    if (strpos($filename, $pidnum) !== false) {
        $outputpid = $filename;
    } 
} 
echo "$outputpid" . "<br />";
$nofolder = preg_replace('/var/www/secure/catalog/current/programs/transfer/', '', $outputpid);
echo "$nofolder" . "<br />";

Что вам действительно нужно, так это basename().

mario 09.04.2019 17:35

И, возможно, glob("…/*$pidnum*.pdf") чтобы избежать петли.

mario 09.04.2019 17:37
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В этом случае вы должны использовать str_replace вместо preg_replace, так как здесь вам не нужны регулярные выражения.

Причина, по которой ваше регулярное выражение терпит неудачу, заключается в том, что вы «выбираете» косую черту в качестве начального/конечного разделителя регулярного выражения, но, поскольку в вашей строке несколько косых черт, регулярное выражение завершится после var. Это делает ваше регулярное выражение недействительным.

Либо используйте вместо этого str_replace (лучшее решение imo), либо добавьте другие разделители вокруг вашего шаблона.

Таким образом, ваш код станет:

$pidnum = '710';  
foreach (glob("/var/www/secure/catalog/current/programs/transfer/*.pdf") as $filename) {
    if (strpos($filename, $pidnum) !== false) {
        $outputpid = $filename;
    } 
} 
echo "$outputpid" . "<br />";
$nofolder = str_replace('/var/www/secure/catalog/current/programs/transfer/', '', $outputpid);
echo "$nofolder" . "<br />";

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

echo $outputpid . "<br />";

вместо

echo "$outputpid" . "<br />";

Спасибо, это поможет мне довольно легко заставить что-то довольно сумасшедшее работать в CMS нашего колледжа.

linuxgx 09.04.2019 18:04

Другие вопросы по теме

Похожие вопросы

Проблема с отображением данных с отношением «многие ко многим» в Laravel
Как использовать required_if в полях файлового массива с массивом в качестве первого аргумента?
Удалить все слова из строки "#User#,<br><br>Спасибо#За предоставление" между "#User#" и "#" А также извлечь "#User#" из строки
Форма не собирает пользовательский ввод, и запрос не работает должным образом, хотя я ввел правильную таблицу и столбец
Соединение WebSocket с ошибкой: ошибка при установлении соединения: net::ERR_CONNECTION_TIMED_OUT
Продолжайте получать ошибку «Преобразование массива в строку» при попытке запустить метод конкатенации
Можно ли редактировать бэкенд TYPO3?
Автозаполнение поиска в Laravel 5.5 с помощью Typeahead.js с использованием двух столбцов таблицы
Нежелательные поля повторно отображаются во время обработки ошибок
Как использовать «время» (данные из базы данных, тип данных: метка времени) для построения графика в Chart JS