php 字符串操作问题

php string manipulation issues

我有以下字符串...

$string = "True is True (5-7 years)";

我想要的是得到-TiT(5-7岁)

我尝试了以下代码,但没有成功...

$string = "True is True (5-7 years)"; 
$explodedString = explode(" ",$string); 
for($i = 0; $i < 4; $i++){ 
    $tempString = substr($explodedString[$i], 0, 1); 
    $finalString .= $tempString; 
}  

简而言之,我需要它的首字母的前三个字,括号中的其余部分是这样的.... TiT(5-7年)。怎么样?

您的循环超出了一个元素。如果要前3个单词的首字母,应该是$i < 3.

那么你应该使用 array_slice()implode() 来连接数组的其余部分。

for ($i = 0; $i < 3; $i++) {
    $finalString .= $explodedString[$i][0];
}
$finalString .= implode(' ', array_slice($explodedString, 3));

DEMO

这是使用正则表达式的好例子:

$str = 'True is True (5-7 years)';
preg_match_all('~\([^()]*\)|\b\w~', $str, $matches);
echo implode("", $matches[0]); // TiT(5-7 years)

正则表达式细分:

  • \([^()]*\) 匹配括号内的任何内容,包括他们自己
  • |
  • \b\w 匹配单词的第一个单词字符
$string = "True is True (5-7 years)"; 
$new_string = preg_replace('/^([a-z])[a-z]+ ([a-z])[a-z]+ ([a-z])[a-z]+ (\(.+\))$/i', '', $string); 

首先。 创建一个空变量。这将是你的最终结果

$result="";

然后你使用 foreach 来循环你的爆炸字符串。 在每个部分检查第一个字符。 如果不是 ( 将第一个字符添加到结果变量中。 否则将整个数组元素添加到结果变量

foreach(explodedString as $t){
If($t[0] !="("){$result.=$t[0];} else{$result.=$t;}
}

在循环结束时你会得到你想要的

echo $result;