aritabacan Ответов: 1

Как использовать preg_replace в целом на массивах


У меня есть два вопроса, первый

<?php
$text = "a iKo SaioT eeee";
$fonts = "a|i|u|e|o";
$newText = preg_replace("#([$fonts].+?(?=[^$fonts![:space:]]))#us", '<b>$1</b>', $text);
echo $newText;
?>


Будет как (один яКо Смоноблоки AIOТ е ееее). Нет (один яКо Смоноблоки AIOТ эээээ). Почему последняя буква eeee не меняется жирным шрифтом? И когда $text = " a" Результат тоже не превращается в жирный


Во-вторых, как преобразовать этот код в jquery

$newText = preg_replace("#([$fonts].+?(?=[^$fonts![:space:]]))#us", '<b>$1</b>', $text);


Причина $fonts-это массивы, не совпадающие в php

Что я уже пробовал:

Мне тоже нужно без пространства.
Потому что если я помещу пробел в массив a|i|u|e|o / [: space:].
Это будет такой &ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ; будут отдельные. А если я использую #([$fonts]?(? =[^$шрифты![: space:]]))#us без .+, первый и последний, шрифты не полужирные

Если я использую
код preg_replace('/['.$шрифты.']/я', '&ЛТ;б&ГТ;$1&ЛТ;/б&ГТ;', $text будет);
Результат будет таким, верно? один яКо Смоноблоки AIOT eeee, но если вы нажмете вправо и осмотрите.
Вы можете увидеть &ЛТ;б&ГТ;а&ЛТ;/б&ГТ; &ЛТ;б&ГТ;я&л;/б и GT;к&ЛТ;б&ГТ;о&ЛТ;/б&ГТ; с&ЛТ;б&ГТ;а&ЛТ;/б&ГТ;&ЛТ;б&ГТ;я&ЛТ;/б&ГТ;&ЛТ;б&ГТ;о&ЛТ;/б&ГТ;Т &ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;
Быть разделены пробелами

Но в отличие от использования шрифтов^$![:пространство:]
Чтобы быть &ЛТ;б&ГТ;а&ЛТ;/б&ГТ; &ЛТ;б&ГТ;я&л;/б и GT;к&ЛТ;б&ГТ;о&ЛТ;/б&ГТ; с&ЛТ;б&ГТ;моноблок&ЛТ;/б&ГТ;Т ээээ

Почему я использую пространство exeption? Потому что арабский алфавит непрерывен
Если вы используете шрифты^$![:пробел:] чтобы быть как &ЛТ;б&ГТ;مَنْ بِا جَاءَ&ЛТ;/б&ГТ;
Если нет &ЛТ;б&ГТ;م&ЛТ;/б&ГТ;&ЛТ;б&ГТ;َ&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ن&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ْ&ЛТ;/б&ГТ; &ЛТ;б&ГТ;ج&ЛТ;/б&ГТ;&ЛТ;б&ГТ;َ&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ا&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ء&ЛТ;/б&ГТ;&ЛТ;б&ГТ;َ&ЛТ;/б&ГТ; &ЛТ;б&ГТ;ب&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ِ&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ا&ЛТ;/б&ГТ;
Не же مَ نْ جَ اءَ بِ ا = مَنْ جَاءَ بِا

Но эта проблема, как и мой вопрос в посте
Почему последняя буква eeee не меняется жирным шрифтом? И когда $text = "a", результат тоже не превращается в жирный шрифт.

Patrice T

Что предполагается делать "#([$fonts].+?(?=[^$шрифты![: space:]]))#us" ?

aritabacan

Если я использую
код preg_replace('/['.$шрифты.']/я', '&ЛТ;б&ГТ;$1&ЛТ;/б&ГТ;', $text будет);
Результат будет таким, верно? один Ико смоноблоки AIOТ эээээ но если щелкнуть правой кнопкой мыши и проверить.
Вы можете увидеть &ЛТ;б&ГТ;а&ЛТ;/б&ГТ; &ЛТ;б&ГТ;я&л;/б и GT;к&ЛТ;б&ГТ;о&ЛТ;/б&ГТ; с&ЛТ;б&ГТ;а&ЛТ;/б&ГТ;&ЛТ;б&ГТ;я&ЛТ;/б&ГТ;&ЛТ;б&ГТ;о&ЛТ;/б&ГТ;Т &ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;
Быть разделены пробелами

Но в отличие от использования шрифтов^$![:пространство:]
Чтобы быть &ЛТ;б&ГТ;а&ЛТ;/б&ГТ; &ЛТ;б&ГТ;я&л;/б и GT;к&ЛТ;б&ГТ;о&ЛТ;/б&ГТ; с&ЛТ;б&ГТ;моноблок&ЛТ;/б&ГТ;Т ээээ

Почему я использую пространство exeption? Потому что арабский алфавит непрерывен
Если вы используете шрифты^$![:пробел:] чтобы быть как &ЛТ;б&ГТ;مَنْ بِا جَاءَ&ЛТ;/б&ГТ;
Если нет &ЛТ;б&ГТ;م&ЛТ;/б&ГТ;&ЛТ;б&ГТ;َ&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ن&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ْ&ЛТ;/б&ГТ; &ЛТ;б&ГТ;ج&ЛТ;/б&ГТ;&ЛТ;б&ГТ;َ&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ا&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ء&ЛТ;/б&ГТ;&ЛТ;б&ГТ;َ&ЛТ;/б&ГТ; &ЛТ;б&ГТ;ب&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ِ&ЛТ;/б&ГТ;&ЛТ;б&ГТ;ا&ЛТ;/б&ГТ;
Не же مَ نْ جَ اءَ بِ ا = مَنْ جَاءَ بِا

Но эта проблема, как и мой вопрос в посте
Почему последняя буква eeee не меняется жирным шрифтом? И когда $text = "a", результат тоже не превращается в жирный шрифт.

Patrice T

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

1 Ответов

Рейтинг:
2

Bryian Tan

Давайте упростим код для PHP. Ниже будет указано, что код должен заменить a, i,u, e или o жирным шрифтом и игнорировать чувствительность к регистру.

$newText = preg_replace('/['.$fonts.']/i', '<b>$0</b>', $text);

Вот версия для jQuery
замените символы жирным шрифтом - JSFiddle[^]

Выход:

один яКо Смоноблоки AIOТ эээээ


aritabacan

Да, я понимаю. Но результат будет другим, как у меня, который использует исключения.

[^$шрифты![:пространство:]]

Если я с помощью U код, результат такой &ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;&ЛТ;б&ГТ;е&ЛТ;/б&ГТ;
Я хочу сделать его одним из тех, кто будет < b> eeee< / b>
Так что я должен использовать

$ шрифты![:пространство:]

Bryian Tan

как насчет

$newText = preg_replace('/['.$fonts.']{1,}/i', '$0', $text);
? это вернет < b> eeee</b & gt; то же самое с jQuery замените символы жирным шрифтом - JSFiddle[^]