如何从删除特殊字符返回?

时间:2014-02-04 16:43:25

标签: php

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

 $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))

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

1 个答案:

答案 0 :(得分:1)

你在这里遇到了一些问题:

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

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

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

我不确定你在这里想要完成什么。但是当你将多个字符转换成同一个字符时,就会丢失信息。如果没有原始字符串,您就不能“取消替换”它们 - 让您这样做的信息现在已经消失了。这些字符现在是破折号,不记得它们曾经是什么。

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


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

在短期内,您可以将短划线更改为下划线并说出title like '$id1'而不是title = '$id1'。与like一起使用时,下划线是一个通配符,因此只要其他字符匹配,您就会在这些点中找到任何带有任何字符的标题。但是当然这不是精确匹配的特定性,也会让MySQL难以使用title上的任何索引。

或者,如果sl实际上是表格参数名称所暗示的ID,那么您可能根本不需要标题来识别记录......

相关问题