【发布时间】:2015-02-21 10:33:46
【问题描述】:
原始代码
$sentance="are you hungry too?";
function newLanguage($text) {
$sql = "SELECT in,out FROM words";
$res = mysql_query($sql) or die();
$in_array = array();
$out_array = array();
while ($row = mysql_fetch_array($res)){
$in_array[] = $row['in']; // table in, NEW words
$out_array[] = $row['out']; //table out, ENG words
}
return preg_replace($in_array,$out_array,$text);
}
$newwords = newLanguage($sentance);
echo $newwords;
修改后的代码:
ini_set("display_errors", "1");
error_reporting(E_ALL);
function newLanguage($text) {
$sql = "SELECT in,out FROM words";
$res = mysql_query($sql) or die();
$in_array = array();
$out_array = array();
while ($row = mysql_fetch_array($res)){
$in_array[] = '/\b' . preg_quote($row['in']) . '\b/'; // table in, NEW words
$out_array[] = $row['out']; //table out, ENG words
}
/* VERSION 2 - STATIC, FOR DEBUGGING
$in_array = array('~\you~s','~\to~s','~\too~s');
$out_array = array('noa','nie','niee');*/
return preg_replace($in_array,$out_array,$text);
}
$sentance="are you hungry too?";
$newwords = newLanguage($sentance);
var_dump($in_array);
echo $sentance;
当前代码
ini_set("display_errors", "1");
error_reporting(E_ALL);
$sentance="are you hungry too?";
function newLanguage($text) {
$sql = "SELECT * FROM words";
$res = mysql_query($sql) or die();
while ($row = mysql_fetch_array($res)){
$in_array[] = '/\b' . preg_quote($row['in']) . '\b/'; // table in, NEW words
$out_array[] = $row['out']; //table out, ENG words
}
return preg_replace($in_array,$out_array,$text);
}
$newwords = newLanguage($sentance);
var_dump($in_array);
echo $newwords;
我的代码有问题,在我的一生中我无法让它工作,我在使用单词过滤器之前曾与 preg_replace 合作过。尽管使用查询结果创建动态数组完全让我失望。我看过一些教程,但没有一个能真正帮助我理解我哪里出错了。
任何帮助将不胜感激:)
目标: 创建新的语言翻译。数据库包含一行“in”和“out”,既是新语言又是本地语言。
问题: 我不确定我的数组是否已成功填充,因为我的 preg_replace 不起作用。
----更新----
这是我的数据库的样子;
id in out
1 you noa
2 to nie
3 too niee
- 它们存储为 VARCHARS
【问题讨论】:
-
你的
in值真的是正则表达式,还是只是普通的字符串? -
您可以发布
words表中的示例值吗?确保您启用了error_reporting(E_ALL)?您可能会收到来自preg_replace的错误,因为正则表达式上没有正确的分隔符。 -
如何启用 error_reporting?我以前没有遇到过这种情况。我只是插入吗? ini_set("display_errors", "1");错误报告(E_ALL);在我的查询之上?
-
是的,你就是这样做的。
-
好的,就是这样。尽管我不确定如何解决问题,但我没有收到任何错误,但仍然没有什么新的报告。当我删除 $newwords = newLanguage($sentance);我能够得到回声。虽然 $newwords = newLanguage($sentance);在代码中它甚至不会回显句子..有些不对劲。