как заменить группу двойной обратной косой черты в строке в *
PHP заменить группу двойной обратной косой черты
, например:
\\\\a -> **a
\\\a -> *\a
\\a -> *a
\a -> \a
Я стараюсь использовать как str_replace
и preg_replace
, но это не удалось во втором случае
str_replace('\\', '*', $str);
preg_replace('/\\\\/', '*', $str);
=> `\\\a` -> `**a`
причина я хочу сделать это я хочу что-то же, как Split string by delimiter, but not if it is escaped но
$str = '1|2\|2|3\\|4\\\|4';
$r = preg_split('~\\\\.(*SKIP)(*FAIL)|\|~s', $str);
var_dump($r);
дать мне.
0 => string '1' (length=1)
1 => string '2\|2' (length=4)
2 => string '3\|4\\' (length=6)
3 => string '4' (length=1)
я ожидал что-то вроде
[0] => 1
[1] => 2\|2
[2] => 3\\
[3] => 4\\\|4
PHP 5.4.45-2
скажите, что моя исходная строка '' 1 | 2 \ | 2 | 3 \\ | 4 \\\ | 4 '; 'как я могу преобразовать ее в' '1 | 2 \\ | 2 | 3 \\ \\ | 4 \\\\\ | | 4 '; '? – Hardy
Я не знаю, как вы можете [сообщать '2 \ | 2' из' 3 \ | 4'] (https://ideone.com/pjTLHG). Даже если вы преобразуете строку в массив байтов с ['$ byte_array = unpack ('C *', $ str);'] (https://ideone.com/HLTE1b), вы не найдете разницы. –