Удалить лишнее из текста

S
На сайте с 13.11.2012
Offline
72
1964

Пытаюсь удалить красоту из текста

$text = "♛ ➜текст➜ текст это запрос для поиска ♛";
$text = trim(preg_replace('#\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]#', '', $text));
echo $text;

Результат ♛ ➜текст➜ текст это запрос для поиска ♛

Почему не удаляет, где ошибка?

Спасибо!

---------- Добавлено 04.03.2017 в 03:31 ----------

Нашел функции поиска и замены эмодзи на url

Помогите переделать так, чтобы заменяло ничем '' - удаляло.


получаем исходный текст с символом, ищем в нем с помощью регулярного выражения все наборы эмодзи;
определяем код символа с помощью функции codePointAt;
создаем элемент img (важно, чтобы это был именно тег img) с url, который состоит из кода этого символа;
заменяем символ на img в исходном тексте.

function emojiToHtml(str) {
str = str.replace(/\uFE0F/g, '');
return str.replace(emojiRegex, buildImgFromEmoji);
}

var tpl = '<img class="emoji emoji--{code} js-smile-insert" src="{src}" srcset="{src} 1x, {src_x2} 2x" unselectable="on">';
var url = 'https://badoocdn.com/big/chat/emoji/{code}.png';
var url2 = 'https://badoocdn.com/big/chat/emoji@x2/{code}.png';
function buildImgFromEmoji(emoji) {
var codePoint = extractEmojiToCodePoint(emoji);
return $tpl(tpl, {
code: codePoint,
src: $tpl(url, {
code: codePoint
}),
src_x2: $tpl(url2, {
code: codePoint
})
});
}

function extractEmojiToCodePoint(emoji) {
return emoji
.split('')
.map(function (symbol, index) {
return emoji.codePointAt(index).toString(16);
})
.filter(function (codePoint) {
return !isSurrogatePair(codePoint);
}, this)
.join('-');
}

function isSurrogatePair(codePoint) {
codePoint = parseInt(codePoint, 16);
return codePoint >= 0xD800 && codePoint <= 0xDFFF;
}

источник

Спасибо!

[umka]
На сайте с 25.05.2008
Offline
456
#1

Символы unicode в PHP записываются так: \x{89AB} (сразу два байта).

И в регулярках при этом используется модификатор /u

Но не проще удалить из строки всё, кроме текста?

Лог в помощь!
S
На сайте с 13.11.2012
Offline
72
#2
'[umka:
;14957697']Но не проще удалить из строки всё, кроме текста?

Проще и лучше, как?

Просто строку эту я не сам пишу, получаю с другого сайта.

LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#3
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
S
На сайте с 30.09.2016
Offline
469
#4

На самом деле, не всё так просто. Там могут быть не только буквы, цифры и пробелы, но и любые другие символы, если это произвольный текст.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Samail
На сайте с 10.05.2007
Offline
363
#5

$text = "♛ ➜текст➜ текст это запрос для поиска ♛";

$text = preg_replace('/[^\p{L}0-9 \!]/iu', '', $text);
echo $text;
S
На сайте с 13.11.2012
Offline
72
#6

Samail, спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий