PHP - Как заменить одинарные обратные косые черты, предшествующие числам, двойными - PullRequest
0 голосов
/ 26 октября 2018

В отличие от символов, замена одинарной обратной косой черты на двойную обратную косую черту не работает для чисел. Есть ли способ сделать это в PHP?.

$attributes = "red\blue\green";
echo "<br>".str_replace("\\", "\\\\", $attributes);
//Output: red\\blue\\green
echo "<br>".preg_replace("/\\\\/", "\\\\\\\\", $attributes);
//Output: red\\blue\\green

// Unlike for characters, it doesn't work for numbers
$attributes = "25\30\35\40\45";
echo "<br>".str_replace("\\", "\\\\", $attributes);
//Output: 25 %
echo "<br>".preg_replace("/\\\\/", "\\\\\\\\", $attributes);
//Output: 25 %

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете использовать preg_replace

$attributes = "red\blue\green";
$newstring = preg_replace('/\\\\/','\\\\\\\\',$attributes);

echo  $newstring;

DEMO

и использовать с str_replace

$attributes = '25\30\35\40\45';
$newstring = str_replace('\\','\\\\',$mystring);

echo $newstring;

DEMO

0 голосов
/ 26 октября 2018

Это вызвано двойными кавычками - переход к одинарным кавычкам, например:

$attributes = '25\30\35\40\45';
echo "<br>".str_replace('\\', '\\\\', $attributes);

работает, \ внутри двойной кавычки анализирует строку как восьмеричную запись - одинарные кавычки будут анализировать то, что задано в виде строки.

...