joh*_*ith 4 php twitter-bootstrap
我创建了一个用于 gettext 翻译的函数,该函数位于头文件中:
function _ex($text){
echo gettext($text);
}
Run Code Online (Sandbox Code Playgroud)
当我使用函数 _ex(""); 时 它会翻译该函数中的任何文本,效果很好,尽管当我在另一个内部有 div 的函数中使用它时,如下所示:
echo '
<div class="row row-centered">
<div class="col-md-3"></div>
<div class="col-md-5">
<div class="alert alert-danger">
<strong>' . _ex("Oh snap!"). '</strong> You are banned. <b><u>Do not</u></b> register another account
<br>Reason you are banned: <b><u>'.$banneduser->reason.'</u></b>
</div>
</div>
</div>';
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它跳出了 div col-md-5 并最终显示如下:

它可以在其他一些文件中工作,但不能在这个文件中工作。我有 ' 。_前任(””) 。' 所以它在回声内部起作用。这背后是否有原因,开盘报价是否取消了div?是不是因为重复了两次?有什么方法可以阻止这种情况而不必重写我的所有代码?结束第一个 echo,然后使用该函数并重新打开另一个 echo?是否有一个函数可以检查它是否已经被回显(如果它只是返回而不是回显)?
当您在_ex("Oh snap!")另一个内部调用时echo,您正在执行以下操作:
echo 'Some text' . echo 'Oh snap!' . 'more text';
Run Code Online (Sandbox Code Playgroud)
这可能会产生不可预测的结果,因为连接echo将首先完全执行,然后包含的echo将完成。演示在这里。将您的函数更改_ex为如下所示:
function _ex($text){
return gettext($text);
}
Run Code Online (Sandbox Code Playgroud)
并且总是_ex这样调用:
echo _ex('Oh snap!');
Run Code Online (Sandbox Code Playgroud)
或者通过串联,您现在可以根据需要在我的答案中使用第一行,或者在您的问题中使用您自己的代码。
保留现有代码的唯一替代方法是为连接语句编写一个新函数:
function _exx($text) {
return gettext($text);
}
Run Code Online (Sandbox Code Playgroud)
向函数添加另一个参数_ex以处理上下文(类似于print_r它的作用:
function _ex($text, $return = false) {
if ($return) {
return gettext($text);
}
echo gettext($text);
}
Run Code Online (Sandbox Code Playgroud)
然后调用:
echo 'Some text' . _ex("Oh snap!", true) . ' more text';
Run Code Online (Sandbox Code Playgroud)
或者重写现有的 echo:
echo '
<div class="row row-centered">
<div class="col-md-3"></div>
<div class="col-md-5">
<div class="alert alert-danger">
<strong>';
_ex("Oh snap!");
echo '</strong> You are banned. <b><u>Do not</u></b> register another account
<br>Reason you are banned: <b><u>'.$banneduser->reason.'</u></b>
</div>
</div>
</div>';
Run Code Online (Sandbox Code Playgroud)
但第一个和第二个选项是“最佳实践” - 您不应该echo在函数调用中使用,因为它会导致您的问题中出现这些问题。
| 归档时间: |
|
| 查看次数: |
2145 次 |
| 最近记录: |