如何使用PHP获取句子中的所有第一个字符?

时间:2014-06-03 02:13:33

标签: php

我想要做的只是获取句子中的所有第一个字符,我知道substr可以做到这一点,但我的substr只能获得一个字符。

我现在使用此代码,但只获取H而不是HW

substr($string,0,1);

我想要的是

$string = "Hello World";
$result = "HW";

知道怎么做吗?

由于

6 个答案:

答案 0 :(得分:2)

$string = 'Hello, World!';
$result = '';
foreach (preg_split('#[^a-z]+#i', $string, -1, PREG_SPLIT_NO_EMPTY) as $word) {
    $result .= $word[0];
}
var_dump($result);

演示:https://eval.in/158045

答案 1 :(得分:0)

你可以轻松地创建一个循环来检查char的当前索引是否为大写(使用ctype_upper($ char)函数)。如果是资金,请将其添加到阵列或打印出来。

答案 2 :(得分:0)

试试这个:

function string_from_first_letter_of_each_word($string){
  $sA = explode(' ', $string); $r = '';
  foreach($sA as $v){
    $r .= substr($v, 0, 1);
  }
  return $r;
}
echo string_from_first_letter_of_each_word('Hello World');

答案 3 :(得分:0)

您可以使用正则表达式:

$string = "Hello World";
preg_match_all('/^.|(?<=\s)./', $string, $matches);
var_dump($matches);

答案 4 :(得分:0)

又一个正则表达式解决方案:

$s = "hello world, it's me";                                                                                                                                                                                   
preg_match_all('/\b\w/', $s, $matches);                                                                                                                                                                        
echo implode('', $matches[0]);

打印hwism

答案 5 :(得分:0)

这是一个没有regex的解决方案:

$yourString = "This is a test";
$yourArray = explode(" ",$yourString);
$firstLetters = "";
foreach($yourArray as $word) {
    $firstLetters .= strtoupper($word[0]);
}

echo $firstLetters; // > TIAT