Я создаю экспериментальное приложение PHP, которое обрабатывает стихи на кириллице c UTF-8 символов . Я хочу добиться следующего:
- Подсчитать вхождения каждого персонажа и общее количество для таких категорий, как «все согласные». Это могут быть специальные символы и знаки препинания, если я могу скрыть некоторые из них в выводе. Я работаю на UTF-8, поэтому могу использовать только многобайтовые функции. Использование count_chars () не возможно: (
- Сохранение разрывов строк и заглавных букв. Я сохраняю несколько копий исходного текста с различным форматированием. Они могут выглядеть избыточными, но я хочу сохранить как можно больше информации.
- Изменение HTML форматирования определенных символов на основе условия, например, придание гласным и согласным различного цвета фона или выделение каждого вхождения выбранного символа. Насколько я понимаю, сначала мне нужно разделить строку в строки (чтобы сохранить разрывы), затем превратить каждый из них в массив из 1-символьных кусков. Для вывода я бы соединил строки () обратно. К сожалению, я не смог найти никаких идей о том, как применить HTML для массива значений, чтобы решить такую проблему, как моя.
Что я пробовал
Помимо того, что я не знал, как сделать что-то, я столкнулся с некоторыми незначительными проблемами. Я делаю сейчас.
Я собираю стихотворение с помощью метода post. Поэма на английском языке sh для иллюстрации. только с
Пример текста:
We shall not cease from exploration
And the end of all our exploring
Will be to arrive where we started
And know the place for the first time.
Я пронумеровал шаги, чтобы упростить комментирование.
1. Получение значения с тегами и без них
Вот как это выглядит в htmlentities()
после отправки через textarea:
$string = "We shall not cease from exploration<br /> And the end of all our exploring<br /> Will be to arrive where we started<br /> And know the place for the first time."
Как вывести разрывы строк:
$poem = nl2br($string);
Вот копия без тегов:
$droptags = strip_tags($poem);
2. Подсчет символов
Это моя рудиментарная попытка count_chars()
без подсчета l oop (s):
$poem2array = preg_split('//u', $droptags, null, PREG_SPLIT_NO_EMPTY);
$unique_characters = array_unique($poem2array);
Вывод следующий:
(
[0] => W
[1] => e
[2] =>
...
)
3. Разделение строк на массивы
Разделение на строки:
$lines = preg_split('<br />', $showtags);
Моя проблема в том, что массив выглядит так:
(
[0] => We shall not cease from exploration<
[1] => >
And the end of all our exploring<
[2] => >
Will be to arrive where we started<
[3] => >
And know the place for the first time.
)
Моя попытка разделения текст во вложенные массивы. Я знаю, что он сломан, потому что я могу получить только последнюю строку.
foreach($lines as $line) {
$line = preg_split('//u', $line, null, PREG_SPLIT_NO_EMPTY);
}
4. HTML стайлинг
Что касается HTML стилевого оформления массивов, я понятия не имею. Мои эталонные массивы будут выглядеть так:
$vowels = array("a", "e", "i");
$consonants = array("b", "c", "d");
$fontcolor = array("vowels" => "blue",
"consonants" => "orange");