php - 如何只在字符串中的两个单词之间插入一个单词?

时间:2016-01-11 00:25:48

标签: php string

我想在单词之间添加字符串xx,假设这些单词之间不存在xxyy。例子:

  1. this house - > this xx house
  2. this xx house - > this xx house
  3. this yy house - > this yy house
  4. this is my house - > this xx is xx my xx house
  5. this yy is my house - > this yy is xx my xx house
  6. xx xx - > xx xx xx
  7. this is my house yy indeed - > this xx is xx my xx house yy indeed
  8. 如果没有其他xx或另一个xx,我们的想法是默认在两个单词之间插入单词yy。但是,如果在两个单词的MIDDLE中存在xxyy则不添加任何内容。

    如何编写此功能?

2 个答案:

答案 0 :(得分:0)

我想出一个答案:

function my_function($string){

    $value = "";

    $string = preg_replace('/\s+/', ' ', $string);
    $string = explode(" ", $string);

    for($i = 0; $i < sizeof($string); $i++ ){ //"for loop" here

        if( $i !== (sizeof($string) - 1) ){    //do not count the last element 

            if( strtolower($string[$i + 1]) !== "xx" && strtolower($string[$i + 1]) !== "yy" ){ //if next element is not an "and" then we should add it

                if( strtolower($string[$i]) !== "xx" && strtolower($string[$i]) !== "yy" ){ //if the actual element is not already an "AND"
                    array_splice($string, $i + 1, 0, "xx" );
                    $i = $i + 1;
                }
            }
        }
    }

    foreach ($string as $i){
        $value = $value . $i . " ";
    }
    return $value;
}

感谢答案

答案 1 :(得分:-1)

编写代码替换&#34; xx&#34;与&#34; ## @@ %% xx %% @@ ##&#34;然后用&#34;替换每个空格。 xx&#34;然后更换每一个&#34; ## @@ %% xx %% @@ ##&#34;用&#34; xx&#34;

通过将空格与稍后展开的内容折叠起来,您可以专注于新添加的内容。

然后为yy做同样的事情