所以我有点坚持这个 - 我想要替换数组中的文本(通过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很新,如果有人能指出我正确的方向,我会很高兴!非常感谢
答案 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","");
并将替换所有数组位置中的所有文本......