我正在尝试使用 (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 />";
在这种情况下,您应该使用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 />";