翻译模块
介绍
到目前为止,我的代码正在运行,但我不知道这是否是实现我想要的正确方法。我有一个小功能可以翻译网页上的字符串。如果我用数字调用它,它会在一个表中搜索 id,并且仅在它用于该页面时才显示它。如果我用字符串调用它,它会在另一个表中搜索该字符串,如果该字符串不存在,该函数会打印传递的字符串,用空格替换“_”并发出警告。
我想知道两件事是否正确实施(如上所述,它们有效,但我不确定它们是否是个好主意)。但首先是代码。
编码
// Function to output language strings.
function text($Id)
{
// Already defined and tested that are valid (sql injection avoided also)
global $Lang;
global $FullUrl;
if (is_int($Id)) // If a number is being passed
{
$results = mysql_query("SELECT * FROM translations WHERE id='$Id' AND page='$FullUrl'") or die ('Could not query:' . mysql_error());
$row = mysql_fetch_assoc($results);
if (!empty($row[$Lang])) echo $row[$Lang]; // If there is some, echo it
else error($FullUrl,$Lang); // Else, calls error function
}
else // If a string is being passed
{
$results = mysql_query("SELECT * FROM htranslations WHERE keyword='$Id'") or die ('Could not query:' . mysql_error());
$row = mysql_fetch_assoc($results);
if (!empty($row[$Lang])) echo $row[$Lang]; // If it exists in the table, echo it
else // Else (it doesn't exist)
{
$NewId = str_replace("_", " ", $Id); // Replace the "_" with " "
echo "<span style='color: red;' title='"; // Set a red color (warning)
text(Wrong_sentence); // Call this function and echo "This sentence could be wrong"
echo "'>".$NewId."</span>"; // Echo the passed string with spaces
error($FullUrl,$Lang,$Id);
}
}
}
1、在函数内回显好还是在函数外回显好?
我已经阅读了这个问题,并且我不打算进一步操纵字符串。所以,从那篇文章中,我猜最好的主意是像我已经做过的那样做,在函数内部呼应,但我想知道你对这个特殊情况的看法,因为我仍然不确定。返回值并回显该值或从函数回显它会更好吗?为什么?我的问题集中在性能和使代码友好上。
2. 从函数内部调用这个函数有危险吗?
如您所见,在我写的最后一行中text(Wrong_sentence);
。我知道你可以从另一个函数调用一个函数,但是你能从同一个函数调用一个函数吗?我担心它会进入调用自身的无限循环,例如,如果 table 关键字Wrong_sentence
被删除或修改。此外,我不知道可能存在其他安全后果。
欢迎对代码提供任何其他类型的反馈!