PHP中的字符串替换功能不适用于我

时间:2020-04-17 23:08:03

标签: php

我有一个$ 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
        )

2 个答案:

答案 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();

这可能不是最优雅的方法,但它确实有效。