首字母缩写+输入文本的最后一个单词.PHP


Acronym + Last Word of the Entered Text. PHP

nickb最初提供了这些代码。它最初的作用是,当用户输入文本时,它会通过获取输入的每个单词的第一个字母将其转换为首字母缩写。我现在想做的是将输入的文本的最后一个单词作为输出的一部分。示例:如果用户输入自动柜员机,则输出为:ATM机。到目前为止,这就是我所想到的,不幸的是,我现在不知所措,迫切希望能让它发挥作用。请帮忙。

function convert($text) 
{
    $acronym = array();
    $text2 = explode(' ', $text);
    foreach(explode( ' ', $text) as $word)
    {                   
        $acronym[] = strtoupper( $word[0]);
    }
    $count = str_word_count($acronym); 
    array_push($acronym, $text2[$count]);
    echo $text2[$count];
    return implode('', $acronym);
}

看起来您只差一个-在数组中使用$count-1

然而,您的代码可以改进为:

function convert($text) {
    return preg_replace('/'b(.).*?'b's*/',"$1",$text).strrchr($text," ");
}
// input: convert("Department of Redundancy Department");
// output: DoRD Department

您似乎不清楚代码的作用。因此,让我们从头开始编写新代码,但不要复制它,而是应该键入它。我在这里使用的所有函数都在PHP手册中有文档。如果一个函数对你来说是新的,或者你不知道其中一个或其他参数,只需阅读并学习:

$words = str_word_count($text, 2);

这一行代码将来自$text的所有字提取到阵列$words中。

要获取最后一个单词,您只需要获得最后一个数组条目:

$last_word = end($words);

所以这已经是要做的工作的一半了。现在你想提取所有的第一个字母:

$first_letters = array();
foreach ($words as $word) {
    $first_letters[] = substr($word, 0, 1);
}

完成后,所有的第一个字母都在数组$first_letters中,最后一个单词在字符串变量$last_word中。有一点需要注意。如果$text中没有单词,那么这将不起作用。只是说,你自己检查一下。

现在让我们编译最后一个字符串:

$buffer = implode('', $first_letters);

是将数组转换为字符串的简单方法。然后你只需要添加一个空格和最后一个字:

$buffer .= ' ';

这是在添加一个空格字符(很明显,对吧?),而不是最后:

$buffer .= $last_word;

将所有东西结合在一起。

快乐的编码。