如何保持带引号的字符串?

时间:2012-06-11 04:34:50

标签: php

如果用户插入此数据 16" HOUSEHOLD STAND FAN AA070021A 输出应该像这样 16" HOUSEHOLD STAND FAN AA070021A 但我只得到这个输出16 \ HOUSEHOLD STAND FAN AA070021A,报价变为" \"

之前:

16 \ HOUSEHOLD STAND FAN AA070021A

之后:

16" HOUSEHOLD STAND FAN 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 个答案:

答案 0 :(得分:2)

urlencode()添加到您的链接:

<a href="add_to_quote.php?product_name=<?php echo urlencode($product_name) ?>">Add To Quote</a>

答案 1 :(得分: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“HOUSEHOLD STAND FAN 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()是非常棒的功能。

答案 2 :(得分: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);

为我工作。

答案 3 :(得分: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);

这个解决方案对我有用。