【问题标题】:Delete words from string via array based on mysql基于mysql通过数组从字符串中删除单词
【发布时间】:2017-05-16 12:23:23
【问题描述】:

我有一个非常基本的字符串“过滤器”,根据数组内容删除单词。

$delete = array("bad", "words", "delete");
$string= str_replace($delete , '', $string);

这行得通,没问题,但我想让它基于数据库创建一个 $delete2 数组。这就是我所拥有的:

$delete2= array();
$res=mysql_query("SELECT * FROM words WHERE type='delete' ");
while($row = mysql_fetch_array($res)){
$delete2[] = $row['delete'];
}

现在如果我输出这段代码:

$delete = array("bad", "words", "delete");
$string= str_replace($delete , '', $string);
$string= str_replace($delete2 , '', $string);

第二个 str_replace 不会替换任何东西。我错过了什么?谢谢!

【问题讨论】:

  • 您确定$delete2 不为空/包含您想要的数据吗?
  • @AntonisTsimourtos:str_replace 可以接受用于搜索和替换参数的数组。见this
  • 只打印 delete2 并显示结构
  • @SloanThrasher 谢谢,这是我的错误,检查一下!
  • 第二个 str_replace 正在处理已处理的 $string。在您的代码中,使用两个替换,将其分配给不同的变量。第一个喜欢$str_result1 = ...

标签: php mysql arrays str-replace


【解决方案1】:

第二个 str_replace 正在处理已处理的 $string。在您的代码中,使用两个替换,将其分配给不同的变量。第一个喜欢$str_rslt1 = ...

$delete2= array();
$res=mysql_query("SELECT * FROM words WHERE type='delete' ");
while($row = mysql_fetch_array($res)){
    $delete2[] = $row['delete'];
}

$delete = array("bad", "words", "delete");
$str_rslt1 = str_replace($delete , '', $string);
$str_rslt2 = str_replace($delete2 , '', $string);
echo "<p>Result 1: $str_rslt1</p>\n";
echo "<p>Result 2: $str_rslt2</p>\n";

另外,使用 mysqli 函数而不是 mysql 函数。 mysqli 已贬值并受到 SQL 注入的影响。查找准备好的语句和 mysqli 以获取更多信息。

【讨论】:

  • 目前我有多个“硬编码”数组用于删除关键字,就像上面的 $delete 数组一样,它可以正常工作: $string= str_replace($brands, '', $string ); $string= str_replace($thickness, '', $string); $string= str_replace($materials, '', $string);所以错误一定是 $delete2 在哪里?!
  • 您可以将 db delete 单词添加到硬编码数组中,因此只需一个 str_replace。上面的代码你试过了吗?
【解决方案2】:

对不起,我很笨。 $行['删除'];我的表中不存在,我没有引起足够的注意。代码按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多