我有一个包含多个单词的php字符串,我想提取以(X2)结尾的单词,并将它们作为重复单词添加回原始字符串。即:
$ string =(红色,白色(X2),绿色,黑色,灰色(X2));
结果应该是:
$ string =(红色,白色,白色,绿色,黑色,灰色,灰色);
他们不必彼此相邻......
我知道如何用逗号分隔它们......但不知道这个!
答案 0 :(得分:0)
希望这就是你要找的东西。你不会解析作为PHP的一部分的示例字符串,所以我假设它是一个字符串。最快的解决方案是使用正则表达式或类似的东西,我避免这样做,因为如果你不知道那是什么,可能更容易摄取这个解决方案。
$string = "red, white (X2), green, black, grey (X2)";
$words = explode(" " , $string);
$temp = "";
$new_string = array();
foreach ( $words as $w ) {
if ( strpos($w, "(X2)") !== false ) {
array_push($new_string , $temp.",");
} else {
array_push($new_string , $w);
}
$temp = $w;
}
echo implode(" " , $new_string );
答案 1 :(得分:0)
通过更多控制来实现这一目标的另一种方法是创建function
,例如:
function createNewString($string, $delimiter = ', ')
{
$pieces = explode($delimiter, $string);
foreach($pieces as $key => $value)
{
if( substr($value, -4) == '(X2)' )
{
preg_match('/.+?(?=\(X2\))/', $value, $matches);
for($i = 1; $i <= 2; $i++)
{
$newPieces[] = trim($matches[0]);
}
continue;
}
$newPieces[] = $value;
}
return $newString = implode($delimiter, $newPieces);
}
然后,您可以将代码中的任何位置的简单字符串传递给函数,并获取已清理的字符串。
$string = 'red, white (X2), green, black, grey (X2)';
echo createNewString($string);
输出:
red, white, white, green, black, grey, grey
这允许您控制分隔符,以防它在字符串中发生更改。然后,在重新创建字符串时,输出将使用相同的分隔符。
此外,它确保逗号放在正确的位置,并从末尾删除任何尾随逗号。