php - 使用 (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 />";
推荐阅读
- python - 在 Matplotlib 中并排绘制等高线图?
- java - 扫描完我的二维码后转到下一个活动
- python - 如何删除带有条件的python数据框中的行?
- php - PHP处理来自AJAX Jquery帖子的多维对象//数组
- excel - 动态过滤日期范围的代码
- azure - 如何将 Airflow 日志发送到 Azure Blob Store
- nativescript - NativeScript Android 应用程序中的运行时请求权限
- continuous-integration - 云构建中的 Helm 失败
- c++ - 为什么我在这段代码中得到编译错误?
- python - 重新打开封闭图matplotlib