首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP使用单词中的字符以正确的顺序输出相应的段落

PHP使用单词中的字符以正确的顺序输出相应的段落
EN

Stack Overflow用户
提问于 2018-08-29 21:35:43
回答 1查看 91关注 0票数 0

我收集了一个表单字段字符串条目,例如。$Name我希望计算该单词中的字符数,然后为该单词中的每个字符显示一些与新部分中的每个字符相关的文本信息。例如,如果他们输入Max,我就会有一段关于m的文字,一段关于a的文字,还有一段关于x的文字。

到目前为止,我使用的是:

代码语言:javascript
复制
$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上面的代码片段结果,我只想使用这些结果来帮助以正确的顺序输出相应的段落。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 21:54:07

我猜你会想要这样的东西?

代码语言:javascript
复制
<?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字符的使用。当某些UTF-8字符用作输入时,strlen()str_split()会中断,因为这些字符可能由多个字节组成(例如,来自某些外来字母表的字符),而非多字节就绪的函数和strlen()等函数可能会认为单个字符实际上是两个字符。

在这里,我假设您使用的是UTF-8输入。如果您确定不需要,则可能不需要mb_*函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52078769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档