Доступ к переменным из родительской области в анонимной функции PHP

String#replaceAll() интерпретирует этот аргумент как регулярное выражение . \ является escape-символом как в String, так и в regex. Вам нужно дважды уйти от него для регулярного выражения:

string.replaceAll("\\\\", "\\\\\\\\");

Но для этого вам не обязательно нужно регулярное выражение, просто потому, что вам нужна точная замена по каждому символу, и вам не нужны шаблоны Вот. Поэтому String#replace() должно быть достаточно:

string.replace("\\", "\\\\");

Обновление: согласно комментариям, вы, похоже, хотите использовать строку в контексте JavaScript. Возможно, вам лучше использовать StringEscapeUtils#escapeEcmaScript() , чтобы покрыть больше символов.

30
задан Jake 23 February 2013 в 15:33
поделиться