-3

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);
}
4

2 回答 2

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
于 2012-07-26T15:16:30.030 回答
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;

把所有东西放在一起。

快乐编码。

于 2012-07-26T15:25:55.390 回答