PHP: Выбегая персонажей, заслуживающих коррекса - кто -нибудь знает, что с этим не так?

StackOverflow https://stackoverflow.com/questions/1789382

  •  22-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь избежать задержанных в режиме персонажей с помощью обратной сутки (не спрашивайте-достаточно сказать, что я не пытаюсь проанализировать HTML :)), и я получаю что-то странное.

$regex_chars = array('[' , '\\' , '^', '$' , '.' , '|' , 
    '?' , '*' , '+' , '(' , ')');  
$regex_chars_escaped = array('\[ ' , '\\\\ ' , '\^ ', '\& ' , 
    '\. ' , '\| ' , '\? ' , '\* ' , '\+ ' , '\( ' , '\)'); 
$escaped_string = str_replace($regex_chars,$regex_chars_escaped,
     implode("",$regex_chars));
echo implode('&nbsp;',$regex_chars) . "<br />";
echo $escaped_string;

Пространства для ясности. Это выход

[ \ ^ $ . | ? * + ( )
\\ [ \\ \^ \& \. \| \? \* \+ \( \)

Так что все хорошо, за исключением первой части. Откуда «» и почему это не " ["?

Это было полезно?

Решение

Почему бы просто не использовать preg_quote?

Другие советы

Я считаю, что это только из -за того, что вы ставите Chars в массив. Попробуй это:

$regex_chars = array('\\' , '[' , '^', '$' , '.' , '|' , 
        '?' , '*' , '+' , '(' , ')');  
$regex_chars_escaped = array( '\\\\ ' ,'\[ ', '\^ ', '\& ' , 
        '\. ' , '\| ' , '\? ' , '\* ' , '\+ ' , '\( ' , '\)'); 

И вы должны получить ожидаемый выход. Проверить «Потенциал Gotchas ' раздел в STR_REPLACE функция спецификация

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top