PHP nasıl preg_replace kullanarak bir Rus sözcüğü eşleşebilir?

0 Cevap php

PHP nasıl bir dizge içinde bir Rus sözcüğü (ayrıca Rusça) eşleme hakkında nasıl gidiyor?

Bu gibi Yani, örneğin bir şey:

$pattern = '/слово/';
preg_replace($pattern, $replacement, $string_in_russian)

Ben denedim utf8_encode ve htmlentities $ desen için UTF-8 bayrağı ile, ama işe yaramadı. Ben de $ string_in_russian kodlamak gerekir?

/ U bayrağı işe yaramadı için Update: Öneri yüzden ben bu ihtiyaç gerçek kod koyuyorum. Bile (Site Rus dilini kullanmak doğru kurulum ve çalışır, ancak bu durumda değil) Wordpress için bir sözlük eklentisi değil. Yani burada kod

$glossary_title = $glossary_item->post_title;
$glossary_search = '/\b'.$glossary_title.'s*?\b(?=([^"]\*"[^"]\*")\*[^"]*$)/iu';
$glossary_replace = '<a'.$timestamp.'>$0</a'.$timestamp.'>';
$content_temp = preg_replace($glossary_search, $glossary_replace, $content, 1);

When I do a quick echo into HTML comment this is the kind of string I get for the pattern
/\bсловоs*?\b(?=([^"]*"[^"]")[^"]*$)/iu

Ve de, hala çalışmaya görünmüyor. Ben belki de (regex bu seviye biraz beni aşıyor ama bunun mümkün çoğul için var olduğunu varsayalım) beni vidalama, ama yardım etmedi çıkarmadan "s" olduğunu düşündüm.

Bazı $ içerik İngilizce dizeleri ve yerine Rus ve hedef kelimelerle düz PHP dosyası - Update #2: Tamam ben tam bir "boş barut" test yapmaya karar verdi. İşte kod

$content_en = 'Nulla volutpat pretium nunc, ac feugiat neque lobortis vitae. In eu sapien sit amet eros tincidunt viverra. <b style="color:purple">Proin</b> congue hendrerit felis, et consequat neque ultrices lobortis. <b style="color:purple">Proin</b> luctus bibendum libero et molestie. Sed tristique lacus a urna semper eget feugiat lacus varius. Donec vel sodales diam. <b style="color:purple">Proin</b> fringilla laoreet purus, a facilisis nisi porttitor vel. Nullam ac justo ac elit laoreet ullamcorper vel a magna. Suspendisse in arcu sapien.';
$find_en = 'proin';
$replace_with_en = '<em style="color:red">REPLACEMENT</em>';
$glossary_search = '/\b'.$find_en.'s*?\b(?=([^"]*"[^"]*")*[^"]*$)/iu';
$content_en_replaced = preg_replace($glossary_search, $replace_with_en, $content_en);

$content_ru = 'Lorem Ipsum используют потому, что тот обеспечивает более или менее стандартное заполнение шаблона, а также реальное распределение букв и пробелов в абзацах, которое не получается при простой дубликации "Здесь <b style="color:purple">ваш</b> текст.. Здесь <b style="color:purple">ваш</b> текст.. Здесь <b style="color:purple">ваш</b> текст.." Многие программы электронной вёрстки и редакторы HTML используют Lorem Ipsum в качестве текста по умолчанию.';
$find_ru = 'ваш';
$replace_with_ru = '<em style="color:red">Многие</em>';
$glossary_search = '/\b'.$find_ru.'s*?\b(?=([^"]*"[^"]*")*[^"]*$)/iu';
$content_ru_replaced = preg_replace($glossary_search, $replace_with_ru, $content_ru);

Ve burada çıkış bir ekran görüntüsü http://www.flickr.com/photos/iliadraznin/5372578707/

Gördüğünüz gibi Rus yoktur ve kod aynıdır ve ben / u bayrağını kullanarak kulüpler ise İngilizce metin, hedef sözcüğü yerini almıştı. Dosyası da UTF-8 kodlanmış. Herhangi bir öneriniz? (Ve yine, ben hiçbir şey hala, "s" kaldırarak çalıştım)

0 Cevap