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

#php

#php

Вопрос:

Я пытаюсь использовать (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 />";
  

Комментарии:

1. Чего вы действительно хотите, так это basename() .

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

Ответ №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 />";
  

Комментарии:

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