массивы — PHP Использование символов из слова для вывода соответствующих абзацев в правильном порядке

Я собираю запись в поле формы, например. $Name
Я хочу посчитать символы в этом слове, а затем для каждого символа в этом слове показать некоторую текстовую информацию, относящуюся к каждому символу в новом разделе. например, если они печатают Max У меня тогда есть параграф о mабзац о a и один о x,

Пока я использую это:

$Letters = (str_split($Name));
<?php foreach ($Letters as $value) {
echo "value <br>";
} ?> // shows each letter

<?php echo mb_strlen ($Name) ?> // prints number of characters in entry

<?php if (mb_strlen ($Name) > 2): ?>
*code to make additional text section if $Name has more than eg 2 characters
<?php endif; ?> //new text section created for eg third letter

<?php echo $Name[2]; ?> // prints third letter of name in the newly created
//section in this case

<?php echo strpos($Name, "a")?> // will tell me "a" appears in second
//place in example "Max"

Но каков эффективный подход для вызова соответствующего текстового блока для каждой буквы $Name и разместить его в правильном порядке (при условии, что эти текстовые блоки записаны в том же файле кода)? Я не хочу echo приведенный выше фрагмент приводит к выводу, как это происходит в настоящее время. Я просто хочу использовать эти результаты, чтобы помочь выводить только соответствующие абзацы в правильном порядке. Спасибо.

0

Решение

Я предполагаю, что вы хотите что-то подобное?

<?php
$texts = [
'a' => 'text about a',
'b' => 'text about b',
// etc
];

$name = 'something';

// Loop over all letters.
for ($i = 0; $i < mb_strlen($name); $i++) {
$letter = mb_substr($name, $i, 1); // Get current letter.
$text_for_letter = $texts[$letter] ?? null; // Get the text for this letter from the array of texts.

if ($text_for_letter) {
echo 'Text for letter ' . $letter . ' is: ' . $text_for_letter;
}
}

Некоторая справочная информация о том, что происходит:

Мы используем mb_strlen() вместо strlen() а также mb_substr() вместо str_split() потому что они охватывают использование символов UTF-8. strlen() а также str_split() будет прерываться, когда определенные символы UTF-8 используются в качестве входных данных, потому что эти символы могут состоять из нескольких байтов (например, символов из некоторых иностранных алфавитов), которые плохо интерпретируются не готовыми к многобайтовым функциям функциями, такими как strlen() Можно подумать, что один символ на самом деле два символа.

Здесь я предполагаю, что вы работаете со входом UTF-8. Если вы уверены, что это не так, вам могут не понадобиться функции mb_ *.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector