PHP Регулярное выражение или str_replace и строка \ 201 - PullRequest
0 голосов
/ 15 апреля 2020

Я не могу заставить это PHP работать:

$fo = "m\201 m\901";
echo str_replace('\\','*',$fo);
echo '<br>';
echo preg_replace('/\\\/', '%', $fo);

Я получаю это:

m� m*901
m� m%901

Как будто \201 является символом для какой-то странной вещь?

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Попробуйте одинарные кавычки

$fo = 'm\201 m\901';
0 голосов
/ 15 апреля 2020

обратная коса sh, за которой следуют 3 восьмеричных числа [0-7] в двойных кавычках, - это запись PHP для указанного c символа. Ознакомьтесь с PHP руководством . Символ \ 201 или \ x81 не существует в UTF-коде. Мы получаем � при выводе. 9 не существует как восьмеричное число, поэтому \ 901 не интерпретируется как символ.

В одинарных кавычках восьмеричные числа не интерпретируются как символы. Тем не менее, сама обратная коса sh должна быть записана как \\.

$fo = 'm\201 m\901';
$new = str_replace('\\','*',$fo);
var_dump($new);
//string(11) "m*201 m*901"
...