0

如果用户插入此数据16" HOUSEHOLD STAND FAN AA070021A,则输出应与此16" HOUSEHOLD STAND FAN AA070021A 相同 ,但我只得到此输出 16\ HOUSEHOLD STAND FAN AA070021A,引号变为“\”。

前 :

16\ 家用立式风扇 AA070021A

后 :

16" 家用立式风扇 AA070021A

add_to_quote.php?product_name=16" HOUSEHOLD STAND FAN AA070021A

 <?php
  $product_name_1 = $_GET['product_name'];
  $product_name_2  = str_replace('"', "", $product_name_1);
  $product_name = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $product_name_2);
  echo $product_name;
  ?>
4

4 回答 4

2

添加urlencode()到您的链接:

<a href="add_to_quote.php?product_name=<?php echo urlencode($product_name) ?>">Add To Quote</a>
于 2012-06-11T04:51:35.500 回答
2

我对您的代码有不止一条评论:

1-清理您的输入。代替:

$product_name_1 = $_GET['product_name'];

采用:

$product_name_1 = mysql_real_escape_string(stripslashes($_GET['product_name']));

至于报价,我使用的一种方法,也是最简单的一种方法是使用base64_encode()方法。

这是一个示例(取自您的代码,但变量的处理方式不同):

add_to_quote.php?product_name=16" 家用支架风扇 AA070021A

 <?php
  $product_name_1 = $product_name_1 = htmlentities($_GET['product_name']);
  $product_name_2  = base64_encode($product_name_1);
  echo $product_name_2 . "<br />";
  $product_name_3 = base64_decode($product_name_2);
  echo $product_name_3;
  ?>

base64_encode()在这种情况下base64_decode()是很棒的功能。

于 2012-06-11T04:58:29.210 回答
0

改变:

$product_name = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $product_name_2);

到:

$product_name = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $product_name_1);

为我工作。

于 2012-06-11T04:48:17.650 回答
0
$product_name_1 = htmlentities($row["product_name"]);
$product_name_2  = str_replace('"', "", $product_name_1);
$product_name = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $product_name_2);

这个解决方案对我有用。

于 2015-01-30T17:45:35.107 回答