使用(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 />";

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

相关内容

最新更新