URL解析并使用smarty获取网址的一部分

时间:2014-06-19 10:29:05

标签: php parsing smarty

通过使用下面的PHP代码,我可以获取当前的URL并执行解析并获取字符串的一部分。但是这个代码并不支持我的smarty模板文件。我转换的智能代码是工作不正常。

php代码:

<?php

$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

$url_path=$url;

$parsed = parse_url($url);

$path = explode('/', $parsed['path']);

$resulturl =  $parsed['scheme'] . '//' . $parsed['host'] .'/'. $path[1] . '/';

$outurl = $path[1];

 ?> 

if ($outurl == "album") { 
    <h6>Sample text one </h6>
 }
else
{ 
    <h6>Sample text two </h6>
}

Smarty代码:

{php} 

$url={$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}

$url_path=$url;

$parsed = parse_url($url);

$path = explode('/', $parsed['path']);

$resulturl =  $parsed['scheme'] . '//' . $parsed['host'] .'/'. $path[1] . '/';

$outurl = $path[1];

{/php}

{if $outurl == 'album'}
     <h6>Sample text one </h6>
{else}
     <h6>Sample text two </h6>
{/if}

1 个答案:

答案 0 :(得分:1)

你这样做错了。 Smarty用于将PHP操作与显示分开。你应该做的很简单:

PHP文件:

<?php

$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

$url_path=$url;

$parsed = parse_url($url);

$path = explode('/', $parsed['path']);

$resulturl =  $parsed['scheme'] . '//' . $parsed['host'] .'/'. $path[1] . '/';

$outurl = $path[1];

$smarty->assign('outurl', $outurl);

Smarty模板文件:

{if $outurl == 'album'}
     <h6>Sample text one </h6>
{else}
     <h6>Sample text two </h6>
{/if}

现在不推荐在Smarty模板中使用{php}标记,在当前版本中,您只能使用BC类而不是标准类。在您的情况下,我没有看到在Smarty模板中使用此标记的任何意义,因为您可以在PHP文件中简单地执行此操作并将$outurl传递给模板文件。