2015-10-07 6 views
0

мне нужно заменить обратную косую черту только между 2 символов, за исключением кавычек (")Удалить Бэкслэш между 2 символов из строки

Так что, если у меня есть эта строка:

When I look at you, I\understand why I live //replace 
When I look at you, I "\understand why I live // No replace 
When I look at you, I"\understand why I live // No replace 
Sword art online\Мастера меча онлайн opening //replace Sword art online Мастера меча онлайн opening 

Это для строки JSON, но если я использую stripslashes, все backslases будут удалены. Мне нужно только удалить, если строка no have "quotes.

Большое спасибо.

+1

'preg_replace ('~ \ Ь \\\ Ь ~', '', $ строка)' ' –

+0

addslashes (stripslashes ($ строка));' – AbraCadaver

+0

Что делать, если вас захватить все '\\', которые следуют за '' ', а также сопоставить все остальные' \\ 'в строке, а затем заменить все эти захваченные' '... \\' (например, в [this] (https: //regex101.com/r/pO5jU4/1) пример)? – OnlineCop

ответ

1

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

$text = preg_replace('~"[^"]*"\K|\\\\~', '', $text); 

или это одно:

$text = preg_replace('~"[^"]*"(*SKIP)(*F)|\\\\~', '', $text); 

Две модели потребляют символы, заключенные в кавычки. Первый шаблон использует \K, чтобы удалить все символы, совпадающие слева от результата совпадения. Второй заставляет шаблон сбой (с (*F)) и не повторять символы между кавычками (с (*SKIP)).

Обратите внимание, что буквальная обратная косая черта должна быть записана в строке шаблона \\\\. (обратная косая черта сбрасывается один раз для строки и один раз для механизма регулярных выражений).

+0

Это работает для заметок +1 –

0

Попробуйте это:

$strings = array(
    'When I look at you, I\understand why I live', 
    'When I look at you, I "\understand why I live', 
    'When I look at you, I"\understand why I live', 
    'Sword art online\Мастера меча онлайн opening' 
); 

foreach ($strings as $string) { 
    $str = addslashes(stripslashes($string)); 
    var_dump($str); 
} 
+1

Это работает для удаления. –

+0

Удивительный. Рад, что смог помочь. Позвольте мне знать, если вам нужно что-нибудь еще. – CodeGodie