Preg_replace ile çift boşluk Eşleştirme

0 Cevap php

Ben bir WordPress eklentisi yazıyorum ve özelliklerinden biri yinelenen boşlukları kaldırıyor.

Benim kod şöyle görünür:

return preg_replace('/\s\s+/u', ' ', $text, -1, $count);
  • I don't understand why I need the u modifier. I've seen other plugins that use preg_replace and don't need to modify it for Unicode. I believe I have a default installation of WordPress .

  • Without the modifier, the code replaces all the spaces with Unicode replacement glyphs instead of spaces.

  • With the u modifier, I don't get the glyphs, and it doesn't replace all the whitespace.

Aşağıdaki her uzay 1-10 alanlardan vardır. Regex sadece her gruptan alanı kaldırır.

Önce:

This sentence  has extra space.  This doesn’t.  Extra  space, Lots          of extra space.

Sonra:

This sentence has extra space. This doesn’t. Extra space, Lots         of extra space.

$count = 9

How can I make the regex replace the whole match with the one space?


Update: If I try this with regular php, it works fine

$new_text = preg_replace('/\s\s+/', ' ', $text, -1, $count);

It only breaks when I use it within the wordpress plugin. I'm using this function in a filter:

function jje_test( $text ) {
    $new_text = preg_replace('/\s\s+/', ' ', $text, -1, $count);
    echo "Count: $count";
    return $new_text;
}

add_filter('the_content', 'jje_test');

Ben denedim:

  • Removing all other filters on the_content
    remove_all_filters('the_content');
  • Filtrenin önceliğini değiştirme erken ya da geç, the_content eklendi
  • \s+, \s\s+, [ ]+, vb permütasyon her türlü
  • Hatta boş bir dize ile tüm tek boşluk yerine, yerine boşluk olmayacak

0 Cevap