【问题标题】:How can I return from removing special characters?如何从删除特殊字符中返回?
【发布时间】:2014-02-04 16:43:25
【问题描述】:

我已使用特殊字符删除代码,但我无法从此代码返回。如何从此代码返回?我的代码

 $removeme = array("=", "+", " ", ",", "-", "_", "$", "^", "&");
 $title = str_replace($removeme , "-", $row['title']);

我在url中使用了如下链接。

  href="view-items-details?ID=<?php echo $row['sl'];?>&show=<?php echo $title;?>"

并使用 GET 方法,我将其称为以下内容。

 $id=$_GET['ID'];
 $id2=$_GET['show'];
 $removeme = array("=", "+", " ", ",", "-", "_", "$", "^", "&");
 $id1 = str_replace("-", $id2, $removeme);

还有我的数据库查询

  $SQL="select * from tb_classified where sl='$id' and title='$id1'";
  $obj->sql($SQL);

  while($row = mysql_fetch_array($obj->result))

但是我的帖子没有出现。谁能看出我做错了什么?

【问题讨论】:

  • 你做错的第一件事是使用 ext/mysql。不要那么做。 :P 切换到 mysqli 或 PDO。

标签: php


【解决方案1】:

你这里有点问题:

$id=$_GET['ID'];
$id2=$_GET['show'];
$removeme = array("=", "+", " ", ",", "-", "_", "$", "^", "&");
$id1 = str_replace("-", $id2, $removeme);

$id1 将是一个数组,因为“主题”$removeme 是一个数组。基本上,它将等于['=', '+', ' ', ',', "$id2", '_', '$', '^', '&amp;'](每个元素将'-' 替换为$id2 的结果)。一个数组字符串化为"Array"

更接近正确的是$id1 = str_replace("-", $removeme, $id2);——但这个想法仍然有一个严重的缺陷,会阻止它正常工作。

我不太确定您要在这里完成什么。但是当你把多个字符变成同一个东西时,你会丢失信息。如果没有原始字符串,您将无法“取消替换”它们——让您这样做的信息现在消失了。字符现在是破折号,不记得它们以前是什么了。

(这就是为什么我建议不要以这种方式修改数据。最好尽可能对数据进行编码或转义......而且几乎总是可能的。)


(本部分假设您正在尝试查找 title 清理后与 $_GET['show'] 匹配的行。)

在短期内,您可以将破折​​号更改为下划线并使用title like '$id1' 而不是title = '$id1'。下划线在与like 一起使用时是通配符,因此只要其他字符也匹配,您就会在这些位置找到任何包含任何字符的标题。但当然,这不如精确匹配那么具体,并且还会使 MySQL 难以使用 title 上的任何索引。

或者,如果 sl 实际上是一个 ID,正如表单参数名称所暗示的那样,那么也许您根本不需要标题来识别记录...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2016-01-23
    相关资源
    最近更新 更多