2012-06-11 7 views
0

Если пользователь вставить эти данные 16" БЫТОВОЙ STAND FAN AA070021A выход должен быть таким же, как этот 16" БЫТОВОЙ STAND FAN AA070021A, но я только получаю этот выход 16 \ БЫТОВОЙ STAND FAN AA070021A, котировки становятся „\“.Как сохранить строку с кавычками?

До:

16 \ СЕМЬИ STAND FAN AA070021A

После:

16" БЫТОВОЙ 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; 
    ?> 
+7

Вы должны ['urlencode()'] (http://php.net/urlencode) ссылки. – flowfree

+0

Как пользователь вставляет эти данные? –

+0

Add To Quote ..sorry admin insert данные из бэкэнд, а эта страница echo название продукта в ссылке – ruslyrossi

ответ

2

Добавить urlencode() в вашей ссылке:

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

OMG, правильно, спасибо @bsdnoobz :) – ruslyrossi

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

работал для меня.

+0

Извините, что вывод неправильный, на выходе появится 16 \ – ruslyrossi

+0

какой браузер вы используете? он отлично выглядит на моем хром/FF/IE! – alfasin

+0

Я использую FF, но проблема уже решена, благодаря всем.:) – ruslyrossi

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" БЫТОВОЙ 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

'htmlentities' не для входной дезинфекции, это для выхода. –

+1

упс! Приношу свои извинения! Спасибо за напоминание Джек! ^ _ ^ – Aamer

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

Это решение сработало для меня.

Смежные вопросы