Php 使用(preg_replace),我认为我的语法有点不正确。我需要退出什么吗

Php 使用(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) {

我试图使用(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 />";
$pidnum='710';
foreach(glob(“/var/www/secure/catalog/current/programs/transfer/*.pdf”)作为$filename){
if(strpos($filename,$pidnum)!==false){
$outputpid=$filename;
} 
} 
回显“$outputpid”。“
”; $nofolder=preg_replace(“/var/www/secure/catalog/current/programs/transfer/”,“$outputpid”); 回显“$nofolder”。“
”;
在这种情况下,您应该使用
str\u replace
而不是
preg\u replace
,因为这里不需要任何正则表达式

正则表达式失败的原因是,您“选择”了斜杠作为正则表达式的开始/结束分隔符,但由于字符串中有多个斜杠,它将在变量之后结束正则表达式。这会使正则表达式无效

可以使用
str\u 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 />";
$pidnum='710';
foreach(glob(“/var/www/secure/catalog/current/programs/transfer/*.pdf”)作为$filename){
if(strpos($filename,$pidnum)!==false){
$outputpid=$filename;
} 
} 
回显“$outputpid”。“
”; $nofolder=str_replace(“/var/www/secure/catalog/current/programs/transfer/”,“$outputpid”); 回显“$nofolder”。“
”;

与您的问题无关,但您不需要将变量放在引号中来处理它们(在本例中,将它们呼应出来)。你应该和我一起去

echo $outputpid . "<br />";
echo$outputpid。“
”;
而不是

echo "$outputpid" . "<br />";
echo“$outputpid”。“
”;
在这种情况下,您应该使用
str\u replace
而不是
preg\u replace
,因为这里不需要任何正则表达式

正则表达式失败的原因是,您“选择”了斜杠作为正则表达式的开始/结束分隔符,但由于字符串中有多个斜杠,它将在变量之后结束正则表达式。这会使正则表达式无效

可以使用
str\u 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 />";
$pidnum='710';
foreach(glob(“/var/www/secure/catalog/current/programs/transfer/*.pdf”)作为$filename){
if(strpos($filename,$pidnum)!==false){
$outputpid=$filename;
} 
} 
回显“$outputpid”。“
”; $nofolder=str_replace(“/var/www/secure/catalog/current/programs/transfer/”,“$outputpid”); 回显“$nofolder”。“
”;

与您的问题无关,但您不需要将变量放在引号中来处理它们(在本例中,将它们呼应出来)。你应该和我一起去

echo $outputpid . "<br />";
echo$outputpid。“
”;
而不是

echo "$outputpid" . "<br />";
echo“$outputpid”。“
”;
你真正想要的是。并且可能是
glob(“…/*$pidnum*.pdf”)
来避免循环。你真正想要的是。并且可能是
glob(“…/*$pidnum*.pdf”)
来避免循环。谢谢,这将帮助我在我们学院的CMS中轻松完成一些疯狂的工作。谢谢,这将帮助我在我们学院的CMS中轻松完成一些相当疯狂的工作。