我有一个$ events数组,我想删除其中的一个字符串的每个实例,但是当我尝试执行此操作,然后打印该数组时,看不到区别。我做错什么了吗?这是我的代码:
$events = myFunctionToGetData("theDataFile.ics");
$events = str_replace(";VALUE=DATE", "", $events);
print("<pre>".print_r($events,true)."</pre>");
我知道$ events正在获取数据,因为打印它会显示数据,但不会显示已替换字符串。
这是我得到的两个结果。您可以看到一个结果使用[DTSTART],而另一个使用[DTSTART; VALUE = DATE]。我希望将[DTSTART; VALUE = DATE]的所有实例都更改为[DTSTART],以便我可以遍历并按日期获取所有事件。
[3] => Array
(
[BEGIN] => VEVENT
[CREATED] => 20200302T212345Z
[DESCRIPTION] => DTEND:20200324T180000ZDTSTAMP:20200418T211011ZDTSTART:20200324T150000ZLAST-MODIFIED:20200302T212345ZLOCATION:Lower Communication LobbySEQUENCE:0STATUS:ConfirmedSUMMARY:Grand Canyon University Table VisitTRANSP:OpaqueUID:e7ca75ad-289f-463b-a61f-c163bf6a1a2a
[DTEND] => 20200324T180000Z
[DTSTAMP] => 20200418T211011Z
[DTSTART] => 20200324T150000Z
[LAST-MODIFIED] => 20200302T212345Z
[LOCATION] => Lower Communication Lobby
[SEQUENCE] => 0
[STATUS] => Confirmed
[SUMMARY] => Grand Canyon University Table Visit
[TRANSP] => Opaque
[UID] => e7ca75ad-289f-463b-a61f-c163bf6a1a2a
[END] => VEVENT
)
[4] => Array
(
[BEGIN] => VEVENT
[CREATED] => 20190812T155732Z
[DESCRIPTION] =>
Wear your favorite March Madness gear to show support for y our team or wear your Logan Blue to support your Volunteers.
DTEND;VALUE=DATE:20200328DTSTAMP:20200418T211011ZDTSTART;VALUE=DATE:20200327LAST-MODIFIED:20190812T155732ZSEQUENCE:0STATUS:ConfirmedSUMMARY:March Madness Day!TRANSP:OpaqueUID:11f2de6e-bdee-4c44-8b50-fa0a44d46c54
[DTEND;VALUE=DATE] => 20200328
[DTSTAMP] => 20200418T211011Z
[DTSTART;VALUE=DATE] => 20200327
[LAST-MODIFIED] => 20190812T155732Z
[SEQUENCE] => 0
[STATUS] => Confirmed
[SUMMARY] => March Madness Day!
[TRANSP] => Opaque
[UID] => 11f2de6e-bdee-4c44-8b50-fa0a44d46c54
[END] => VEVENT
)
答案 0 :(得分:0)
您应该显示$events
中的内容以及错误消息的输出或<pre>
标签中的最终输出
我有一个$ events数组...
如果它是一个数组,则需要遍历该数组,则不能在数组上使用str_replace
。
$events = myFunctionToGetData("theDataFile.ics");
foreach ( $events as $key => $nested_array ) {
foreach ( $nested_array as $nested_key => $val ) {
$events[ $key ][ $nested_key ] = str_replace( ";VALUE=DATE", "", $val );
}
}
print( "<pre>" . print_r( $events, true ) . "</pre>" );
答案 1 :(得分:-1)
好的,我最终解决了这个问题。我回到函数中,并在文件变成数组之前修改了文件的结果。
$newfile = file_get_contents("theDataFile.ics");
$newfile = str_replace(';VALUE=DATE', '', $newfile);
$mycalendarvariable = $newfile;
由于该文件现在位于函数中,因此我不会将任何内容传递给myFunctionToGetData。就是
$events = myFunctionToGetData();
这可能不是最优雅的方法,但它确实有效。