str_replace在数组中,并在末尾附加文本

时间:2013-07-25 21:44:05

标签: php arrays

所以我有点坚持这个 - 我想要替换数组中的文本(通过str_replace轻松完成),但我还想将文本追加到该特定数组的末尾。例如,我的原始数组是:

阵 (

[1] => DTSTART;VALUE=DATE:20130712
[2] => DTEND;VALUE=DATE:20130713
[3] => SUMMARY:Vern
[4] => UID:1fb5aa60-ff89-429e-80fd-ad157dc777b8
[5] => LAST-MODIFIED:20130711T010042Z
[6] => SEQUENCE:1374767972

我想在“; VALUE = DATE”中搜索该数组并将其替换为空(“”),但也希望在每次替换后插入7个字符的文本字符串(“T000000”)。所以我得到的数组将是:

阵 (

[1] => DTSTART:20130712T000000
[2] => DTEND:20130713T000000
[3] => SUMMARY:Vern
[4] => UID:1fb5aa60-ff89-429e-80fd-ad157dc777b8
[5] => LAST-MODIFIED:20130711T010042Z
[6] => SEQUENCE:1374767972

使用str_replace,substr_replace等组合是否可以这样?我对PHP很新,如果有人能指出我正确的方向,我会很高兴!非常感谢

4 个答案:

答案 0 :(得分:4)

您可以使用preg_replace作为此类操作的一站式商店:

$array = preg_replace('/(.*);VALUE=DATE(.*)/', '$1$2T000000', $array);

正则表达式匹配包含;VALUE=DATE的任何字符串,并捕获前面的任何字符串并将其跟踪到捕获组中(在替换模式中称为$ 1和$ 2)。然后它将$ 1替换为$ 2(有效删除搜索目标)替换该字符串,并将"T000000"附加到结果中。

答案 1 :(得分:1)

天真的方法是循环遍历每个元素并检查;VALUE=DATE。如果存在,请将其删除并附加T000000

foreach ($array as $key => $value) {
  if (strpos($value, ';VALUE=DATE') !== false) {
    $array[$key] = str_replace(";VALUE=DATE", "", $value) . "T000000";
  }
}

答案 2 :(得分:0)

你是正确的str_replace()是你正在寻找的功能。此外,您可以使用连接运算符.将字符串追加到新字符串的末尾。这是你在找什么?

$array[1] = str_replace(";VALUE=DATE", "", $array[1])."T000000";
$array[2] = str_replace(";VALUE=DATE", "", $array[2])."T000000";

答案 3 :(得分:0)

for($i=0;$i<count($array);$i++){
   if(strpos($array[$i], ";VALUE=DATE")){//look for the text into the string
      //Text found, let's replace and append
      $array[$i]=str_replace(";VALUE=DATE","",$array[$i]);
      $array[$i].="T000000";
   }
   else{
      //text not found in that position, will not replace
      //Do something
   }
}

如果您只想替换,只需这样做

$array=str_replace($array,";VALUE=DATE","");

并将替换所有数组位置中的所有文本......