Php 仅从Smarty中的路径获取目录名

Php 仅从Smarty中的路径获取目录名,php,directory,smarty,Php,Directory,Smarty,我无法分配自己的PHP函数。(我只能访问TPL文件) 到目前为止,我得到了{$smarty.server.PHP_SELF},它返回类似于/foo/bar.xin。对于内置函数,我希望获得/foo/ 正如我所指出的,{php}标记已被弃用,但您可以执行以下操作: {php} $php_self = $_SERVER['PHP_SELF']; $path = substr($php_self, 0, strrpos($php_self, '/')); // assign a variable to

我无法分配自己的PHP函数。(我只能访问TPL文件)


到目前为止,我得到了
{$smarty.server.PHP_SELF}
,它返回类似于
/foo/bar.xin
。对于内置函数,我希望获得
/foo/

正如我所指出的,
{php}
标记已被弃用,但您可以执行以下操作:

{php}
$php_self = $_SERVER['PHP_SELF'];
$path = substr($php_self, 0, strrpos($php_self, '/'));
// assign a variable to Smarty
$this->assign('path',$path);
{/php}
Path: <strong>{$path}</strong>
{php}
$php_self=$_服务器['php_self'];
$path=substr($php_self,0,strrpos($php_self,“/”);
//为Smarty分配一个变量
$this->assign('path',$path);
{/php}
路径:{$Path}
我无法测试这一点,因为我没有解析器可供使用,但它遵循Smarty文档页面上的示例:


{$smarty.server.PHP_SELF|dirname}
将返回
/foo
,前提是启用了dirname函数(请参见中的
PHP_修饰符)


将返回服务器路径

您是否可以使用
{php}
标记(以后不再推荐使用)?是的,据我所知,我可以。一旦获得PHP访问权限,我将替换它们。如果可以,那么您可以使用PHP进行自己的操作。我不太愿意提供答案,因为1)我不知道您要在什么上下文中使用该值,2)我没有访问Smarty解析器的权限。谢谢您的回答,但是
$path
显示为空/空,即不显示,我不确定如何调试它<
{php}
标记中的code>echo/print
既不显示,也不显示其外部的
{$path}
。@Lazlo-是否确实允许使用
{php}
标记?这可以由控制您正在使用的Smarty对象的任何人打开/关闭。那么,很抱歉,我可能没有打开/关闭。@Lazlo-我不确定您是否试图显示值或什么,但您可以使用它来潜在地将文件名从PHP_SELF中删除。@Jared:我假设
| truncate:length
可以做到这一点,但如何获取长度?
{$smarty.server.DOCUMENT_ROOT}