'<a rel="nofollow" href="$1" class="bbc_link new_win" target="_blank">'
我想使用urlencode()
函数:
'<a rel="nofollow" href="urlencode($1)" class="bbc_link new_win" target="_blank">'
...但我不能用这个:
'<a rel="nofollow" href="'.urlencode($1).'" class="bbc_link new_win" target="_blank">'
...因为$1
不是字符串中的变量;它是一个简单的免费论坛中的元变量。
发送http://www.test.com/out.php?out=http://www.example.com
答案 0 :(得分:6)
这个疯狂的黑客怎么样?
<?
$_ = 'urlencode';
echo "<a rel=\"nofollow\" href=\"{$_($1)}\" class=\"bbc_link new_win\" target=\"_blank\">";
答案 1 :(得分:4)
看看这个技巧:
function foo() { return "title"; }
$func = function($param) { return $param; };
$link = 'http://www.test.com/out.php?out=http://www.example.com';
echo "<a rel=\"nofollow\" href=\"{$func(urlencode($link))}\" class=\"bbc_link new_win\" target=\"_blank\">{$func(foo())}</a>";
$func()
将作为函数调用,括号中的表达式将被评估为任何其他PHP代码。
答案 2 :(得分:3)
有一种方法可以做到这一点,但请接受我的建议,不要使用它。你不应该在字符串中使用函数调用。 但是我会发布一个例子来展示PHP的功能。
但这是一个非常糟糕的编程样本!!!!
<?php
class FunctionAgent{
public function __call($name,$args){
switch (count($args)){
case 0:
return $name();
break;
case 1:
return $name($args[0]);
break;
case 2:
return $name($args[0],$args[1]);
break;
case 3:
return $name($args[0],$args[1],$args[2]);
break;
case 4:
return $name($args[0],$args[1],$args[2],$args[3]);
break;
case 5:
return $name($args[0],$args[1],$args[2],$args[3],$args[4]);
break;
}
}
}
$_ = new FunctionAgent();
echo "the current date is {$_->date("y-m-d")}";
?>
答案 3 :(得分:2)
你不能这样做。您需要在此字符串中对生成的值或替换位置进行编码,而不是在您无法访问它的模板中。
答案 4 :(得分:2)
我刚刚查看了string parsing section of the PHP manual,似乎没有一种方法可以在带引号的字符串中调用函数(动态分配变量名除外)。遗憾。
答案 5 :(得分:0)
您需要扩展模板引擎的工作方式以支持此功能。没有办法让PHP为你做这件事。