2014-01-09 4 views
0

Мне нужно пропустить одинарные кавычки в некоторых входных данных, и я хотел сделать это в рамках функции (функция должна включать в себя и другие инструкции, но я не пишу их здесь для ясности). Так что я написал следующую функцию и тестирование его выход внутри и снаружи функции:Почему не работает «str_replace» при использовании внутри функции?

function quote_skip($data) 
    { 
     $data = str_replace("'", "\'", $data); 
     echo "Output inside the function quote_skip: ".$data." <br>"; 
     return $data; 
    } 
    $test = "l'uomo"; 
    quote_skip($test); 
    echo "Output outside the function quote_skip: ".$test."<br>"; 

Результатом является follwing:

Выход внутри функции quote_strip: л \ 'Uomo

выход за пределы функция quote_strip: l'uomo

Так что происходит, когда я повторяю переменную вне функции, обратная косая черта больше не существует. Почему это происходит? Есть ли способ сохранить обратную косую черту и вне функции?

Я знаю только основы php, и, возможно, ответ очень очевиден, но я не смог найти что-либо на всех форумах, которые я искал. Если у кого-то будет решение, мы будем очень благодарны.

спасибо.

+0

Спасибо @phihag! Я не могу поверить, что это было так очевидно, но я бы не нашел ответа сам. Это была отличная помощь – user3178022

ответ

5

Вы игнорировать возвращаемое значение вашей функции в

quote_skip($test); 

Вы want this:

$test = quote_skip($test); 
2

Функция не проблема, код ниже функция, где вы не эхо вывода функции :

$test = "l'uomo"; 
echo "Output outside the function quote_skip: ".quote_skip($test)."<br>"; 
0

Он будет работать, если вы сделаете так, чтобы переменная проходила по ссылке:

function quote_skip(&$data) // use the `&` 
{ 
    $data = str_replace("'", "\'", $data); 
    echo "Output inside the function quote_skip: ".$data." <br>"; 
} 

Демо: http://phpfiddle.org/lite/code/emr-5ap

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