我有下面的绳子..。
$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岁)。多么?
发布于 2018-12-06 22:11:50
这是使用正则表达式的很好的例子:
$str = 'True is True (5-7 years)';
preg_match_all('~\([^()]*\)|\b\w~', $str, $matches);
echo implode("", $matches[0]); // TiT(5-7 years)Regex细分:
\([^()]*\)匹配括号内的任何内容,包括它们自己|或\b\w从一个单词匹配第一个单词字符发布于 2018-12-06 22:06:59
你的循环太过了一个元素。如果你想要前三个单词的第一个字母,应该是$i < 3。
然后,您应该使用array_slice()和implode()来连接数组的其余部分。
for ($i = 0; $i < 3; $i++) {
$finalString .= $explodedString[$i][0];
}
$finalString .= implode(' ', array_slice($explodedString, 3));发布于 2018-12-06 22:12:43
$string = "True is True (5-7 years)";
$new_string = preg_replace('/^([a-z])[a-z]+ ([a-z])[a-z]+ ([a-z])[a-z]+ (\(.+\))$/i', '$1$2$3$4', $string); https://stackoverflow.com/questions/53660301
复制相似问题