Поддержка Проблемы и решения Помощь с регуляркой

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • А какая задача в целом?

    разве не очевидно?
    удалить на фиг эмоджи из строки.

    Просто удалить из строки или убрать из ВП? Просто если первое, то к ВП это не имеет отношения, тут надо идти на форумы программеров на php.
    Ну или в гугле посмотреть сервисы формирования запросов с регулярками. Такие есть и они помогают

    ну почему не имеет то?
    мне надо именно в wordpress отфильтровать заголовки записей на предмет эмоджи. штатного фильтра эмоджи в wordpress нет, поэтому я спрашиваю здесь.

    сервисы формирования регулярок?
    я вам дал ссылку на такой сервис, там js-регулярка.
    простая регулярка, тупо перечисление эмоджи.
    но перевести ее в PCRE у меня не получается.
    никаких конвертеров из js-регулярок в PCRE-регулярки я не нашел.

    https://regex101.com/ — слева в меню Code Generator

    слева в меню Code Generator

    он генерирует код для готовой регулярки, а как раз готовой и нет.

    пытаюсь конвертировать так:

    
    $clean_text = preg_replace('/(\x{00A9}|\x{00AE}|[\x{2000}-\x{3300}]|\x{D83C}[\x{D000}-\x{DFFF}]|\x{D83D}[\x{D000}-\x{DFFF}]|\x{D83E}[\x{D000}-\x{DFFF}])/u', '', $text);
    

    выбивает ошибку аля:

    
    <b>Warning</b>:  preg_replace(): Compilation failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 
    

    ладно, по фиг.
    обошелся другим способом:

    
    $text = preg_replace('/[^\pL\pM[:ascii:]]+/u', '', $text);
    

    не знаю, насколько это корректно, но эмоджи удаляет.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    штатного фильтра эмоджи в wordpress нет

    Зато есть список в виде функции _wp_emoji_list(), которым можно воспользоваться по аналогии с wp_encode_emoji():

    
    $emoji = _wp_emoji_list( 'partials' );
    
    foreach ( $emoji as $emoji_entity ) {
    	$emoji_char = html_entity_decode( $emoji_entity );
    	if ( false !== strpos( $content, $emoji_char ) ) {
    		$text = preg_replace( "/$emoji_char/", '', $text );
    	}
    }
    

    Впрочем, думаю, что способ из предыдущего ответа будет быстрее.

Просмотр 9 ответов — с 1 по 9 (всего 9)