如果用户插入此数据 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;
?>
答案 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);
这个解决方案对我有用。