Как заменить обратный слэш на два обратных слэша (PHP)

702
20 января 2017, 10:17

Есть строка:

$string = "opentext,opentext\textopen222";

мне нужно одинарный обратный слэш заменить на два обратных слэша. Попробовал так: $string = preg_replace('\\','\\\\',$string); - выдаёт ошибку:

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash

Как быть в этой ситуации?

Answer 1

Для начала ознакомтесь - http://php.net/manual/ru/language.types.string.php#language.types.string.syntax.double

У Вас в строке нет обратного слеша. В данном случае \t это табуляция. Вы можете заменить букву "t" перед слешем на любую другую, которая не входит в список последовательностей php, либо просто поменять двойные кавычки на одинарные.

Тогда ответ от rjhdby, будет для Вас решением.

Answer 2
str_replace('\\', '\\\\', $string);

или

preg_replace('/\\/', '\\\\\\', $string);

sandbox

Конкретно ваша ошибка

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash

происходит из-за некорректного фильтра регулярного выражения. Вы забыли указать в нем разделители.

Синтаксис регулярных выражений в PHP

Так же, как уже правильно заметили, у вас в строке не обратный слеш \, а символ табуляции \t. Что бы комбинация \t рассматривалась как два символа \ и t - необходимо для строки использовать одинарные, а не двойные кавычки:

$string = 'opentext,opentext\textopen222';
READ ALSO
Как отправить get запрос на url c ЧПУ

Как отправить get запрос на url c ЧПУ

Мне нужно отправить get запрос на URL testru/stop/search/{название}, так же на test

416
PHP Soap передать и получить массив

PHP Soap передать и получить массив

Каким наиболее простым образом можно отправить и получить массив при помощи SOAP?

395