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));
这是使用正则表达式的好例子:
$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;
我有以下字符串...
$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));
这是使用正则表达式的好例子:
$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;