удалить 3 обратных слэша с полосками

По некоторым причинам после обновления нескольких вещей на нашем сайте WordPress в настраиваемых полях автоматически добавляется 3 обратной косой черты перед каждым апострофом. Пример: src="abc" приведет к src=\\\"abc\\\"

У меня есть функция в functions.php, с помощью которой я подключаюсь к веб-сайту. Теперь мне нужно удалить эти обратные косые черты. Это оригинальная функция:

add_action('woocommerce_before_single_product', 'headline_placeholder');
function headline_placeholder () {
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'productheadline', true);
wp_reset_query();
}

Это то, что я пытался удалить обратную косую черту, но он удаляет только 2 обратные косые черты, а не все 3.

function removeslashes($string)
{
    $string=implode("",explode("\\",$string));
    return stripslashes(trim($string));
}

add_action('woocommerce_before_single_product', 'headline_placeholder');
function headline_placeholder () {
global $wp_query;
$postid = $wp_query->post->ID;
$meta = get_post_meta($postid, 'productheadline', true);
echo removeslashes($meta);
wp_reset_query();
}

Где ошибка?


person Krystian    schedule 09.07.2017    source источник


Ответы (2)


Возможно, вы можете использовать str_replace, что-то вроде этого:

function removesalshes($text) {
    return str_replace ( "///" , "", $text);
}

Надеюсь, поможет!

person darode    schedule 09.07.2017
comment
спасибо за вашу идею. Я изменил его следующим образом, но не удалил обратную косую черту. Ты знаешь почему? function removeslashes($text) { return str_replace ( "///" , "", $text); } add_action('woocommerce_before_single_product', 'headline_placeholder'); function headline_placeholder () { global $wp_query; $postid = $wp_query->post->ID; $meta = get_post_meta($postid, 'productheadline', true); echo removeslashes($meta); wp_reset_query(); } - person Krystian; 09.07.2017

Кажется, вы удаляете косую черту. Попробуйте следующее:

function removesalshes($text) {
    return str_replace ( '\\\' , "", $text);
}
person Nadir Latif    schedule 10.07.2017
comment
да, вы правы, это была проблема, но по какой-то причине вы не можете поставить три косые черты (или любое другое нечетное число), потому что следующий код не работает. Я также пробовал 6 косых черт, но осталась одна обратная косая черта. Я также пытался отключить magic_quotes, но это не сработало. не знаю почему.. - person Krystian; 10.07.2017
comment
обратная косая черта имеет особое применение в php. если за обратной косой чертой следует другая обратная косая черта, то две обратные косые черты рассматриваются как одна косая черта. это обсуждается в этой статье: stackoverflow.com/a/4764746/4508593. если вы уверены, что ваш текст не содержит никаких полезных косых черт, вы можете удалить все косые черты, используя: str_replace ( '\\' , "", $text); - person Nadir Latif; 10.07.2017
comment
ах спасибо за эту ссылку! В основном эта функция работает, но одна из этих трех обратных косых черт все еще существует перед каждым апострофом. - person Krystian; 10.07.2017
comment
Вы используете функцию addlashes в своем коде. кажется, ваш код добавляет косые черты к данным, прежде чем они будут сохранены в базе данных - person Nadir Latif; 10.07.2017
comment
нет - обычный wordpress-сайт. И это только в настраиваемых полях, содержимое которых я подключаю к страницам продукта. - person Krystian; 10.07.2017
comment
попробуйте этот код: str_replace('\\"', '"', str_replace ( '\\\\\\' , "", $text);). он сначала удаляет две косые черты, а затем удаляет косую черту из апострофа - person Nadir Latif; 10.07.2017
comment
Давайте продолжим обсуждение в чате. - person Krystian; 10.07.2017