Вопрос по PHP, regEx...

12 3
Carapax
На сайте с 27.03.2008
Offline
94
1430

Есть код, находящий в тексте определенные слова и замещающий их на другие определенные слова:


$keys = explode("\n", $keywords);

foreach ($keys as $key)
{
$pat='/([\w\W]*?)\|([\w\W]*)/';
if(preg_match_all($pat,$key,$matches,PREG_SET_ORDER))
{
foreach ($matches as $match)
{
$keyword=$match[1];
$link=$match[2];
$replace='<a href="'.$link.'" '.$target.' title="'.$keyword.'"'.$mode.'>'.$keyword.'</a>';

$case="i";
$regEx = '\'(?!((<.*?)|(<a.*?)))(\b'. $keyword . '\b)(?!(([^<>]*?)>)|([^>]*?</a>))\'s'. $case;
$text = preg_replace($regEx,$replace,$text,$limit);

Но с UTF-8 он, к сожалению, не работает. Вопрос: как заставить? :laugh:

играем (http://www.awro.ru/) спортивное питание (https://maxnutrition.ru/) магазин сантехники в спб (https://saniteka.ru/)
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#1

как заставить... ну можно конечно local UTF подрубить, но лучше для этих действий юзать win1251

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Carapax
На сайте с 27.03.2008
Offline
94
#2

Что-нибудь конкретное?

Сайт на UTF-8.

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#3
Carapax:
Что-нибудь конкретное?
Сайт на UTF-8.

Ну юзайте: iconv

Вот такие реалити кириллицы в утф.

Carapax
На сайте с 27.03.2008
Offline
94
#4
LEOnidUKG:
Ну юзайте: iconv

Спасибо. Подожду других предложений...

S
На сайте с 14.04.2008
Offline
60
#5

Проблема известная. Другое предложение - использовать функции для мультибайтовых строк (mb_ereg_match, mb_ereg_replace etc.) - должно помочь...

Carapax
На сайте с 27.03.2008
Offline
94
#6
seraphim:
Другое предложение - использовать функции для мультибайтовых строк (mb_ereg_match, mb_ereg_replace etc.) - должно помочь...

Да это понятно, что должно :) Мне бы конкретики. Может, кто-то уже решал для себя...

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#7
Carapax:
Да это понятно, что должно :) Мне бы конкретики. Может, кто-то уже решал для себя...

Вы вот тоже странный... Вам уже целую статью дали, там всё написано, что просто так не решается эта проблема.

Вариант как юзать я уже Вам сказал, что ещё то ожидаете?!

T
На сайте с 13.01.2009
Offline
50
#8

Добавить модификатор u , $pat='/([\w\W]*?)\|([\w\W]*)/u';

S
На сайте с 14.04.2008
Offline
60
#9
LEOnidUKG:
Вы вот тоже странный... Вам уже целую статью дали, там всё написано, что просто так не решается эта проблема.

Вариант как юзать я уже Вам сказал, что ещё то ожидаете?!

Да собственно понятно, чего. Что кто-то возьмет и перепишет приведенный кусок кода так, "шоб точняк работало"... :)

Carapax
На сайте с 27.03.2008
Offline
94
#10
Troytft:
Добавить модификатор u , $pat='/([\w\W]*?)\|([\w\W]*)/u';

Пробовал. Но то ли "лыжи не едут, то ли я..." 🤪

seraphim:
Что кто-то возьмет и перепишет приведенный кусок кода так, "шоб точняк работало"... :)

Естественно. Не ссылки же на PHP с UTF. Коих у меня и у самого во множестве...

12 3

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