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

时间:2012-07-26 15:13:05

标签: 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);
}

2 个答案:

答案 0 :(得分:3)

看起来你是一个接一个 - 在数组中使用$count-1

但是,您的代码可以改进为:

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

答案 1 :(得分:1)

看起来你不清楚代码的作用。所以让我们从头开始编写新代码,但不要复制它,但你应该输入它。我在这里使用的所有函数都记录在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;

把所有东西放在一起。

快乐的编码。