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;
将所有东西结合在一起。
快乐的编码。