Как применить preg_replace с учетом кодировки utf8

252
31 октября 2017, 00:03

Ребята, возможно не особо удачно составил оглавление вопроса, но суть заключается в следующем:

у меня есть строки вот такого примера:

Программа «Я пробую» (включает 3 smart-тренировки в течении 2 недель) в любое время, всего за 1650 руб., вместо 3300 руб.
Программа "Стройная весна" (включает 6 smart-тренировок в течении месяца) с 7.30 до 17.00, всего за 2499 руб., вместо 6000 руб.
Программа 'Стройная весна' (включает 6 smart-тренировок в течении месяца) с 7.30 до 17.00, всего за 2499 руб., вместо 6000 руб.

Мне необходимо обезопасить себя для отправки в json.

Для этого я хочу удалить все лапки в разных вариантах из строки.

Если я:

$text1 = preg_replace('/[\«\»\'\"]/', '', $text1);

То на выходе я получаю

Программа Я пробую (вк�ючает 3 smart-тренировки в течении 2 неде�ь) в �юбое время, всего за 1650 руб., вместо 3300 руб.

Как это исправить, а также мне необходимо укоротить строку на макс. количество символов до 128

Answer 1

Просто используйте нативный json_encode, он сам всё экранирует:

$str = "Программа «Я пробую» (включает 3 smart-тренировки в течении 2 недель) в любое время, всего за 1650 руб., вместо 3300 руб.";
$json = json_encode($str);
var_dump($json);

Чтобы укоротить строку, используйте mb_substr:

$str = mb_substr($str, 0, 128);
$json = json_encode($str);
Answer 2

добавьте /u

$text1 = preg_replace('/[\«\»\'\"]/u', '', $text1);

http://php.net/manual/ru/reference.pcre.pattern.modifiers.php

u (PCRE_UTF8) Этот модификатор включает дополнительную функциональность PCRE, которая не совместима с Perl: шаблон и целевая строка обрабатываются как UTF-8 строки. Недопустимая целевая строка приводит к тому, что функции preg_* ничего не находят, а неправильный шаблон приводит к ошибке уровня E_WARNING. Пятый и шестой октеты UTF-8 последовательности рассматриваются недопустимыми с PHP 5.3.4 (согласно PCRE 7.3 2007-08-28); ранее они считались допустимыми.

READ ALSO
Перехватить данные из поля и выполнить скрипт

Перехватить данные из поля и выполнить скрипт

Ситуация такая: есть сайт на wordpress с плагином leadsВ нём есть множество форм

217
Колорбокс-окно загружающий iframe

Колорбокс-окно загружающий iframe

Кастомный попап (Colorbox plugin), который подтягивает содержимое с стороннего адреса специально сверстанной html страницы, имеющею две кнопки - "ДА"...

182
WhatsApp отправка сообщений через Chat-API

WhatsApp отправка сообщений через Chat-API

Доброго дня! Друзья, подскажите пожалуйста, есть ли сейчас живой и работающий вариант передачи сообщений с сайта в WhatsApp?

160
Вывести все элементы

Вывести все элементы

Я получаю и обрабатываю данные, затем в последствии конвертирую всё в массив примерно вот таким способом:

179