Функция String Replace в PHP у меня не работает - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть массив $ events, и я хочу удалить каждый экземпляр строки внутри него, но когда я пытаюсь это сделать, а затем печатать массив, я не вижу разницы. Я что-то не так делаю? Вот мой код:

<code>$events = myFunctionToGetData("theDataFile.ics");
$events = str_replace(";VALUE=DATE", "", $events);

print("<pre>".print_r($events,true)."
");

Я знаю, что $ events получает данные, потому что при печати он показывает данные, но не показывает, что строка была заменена.

Вот два результата, которые я получаю. Вы можете видеть, что один результат использует [DTSTART], а другой - [DTSTART; VALUE = DATE]. Я хочу, чтобы он изменил все экземпляры [DTSTART; VALUE = ДАТА], чтобы просто [DTSTART], чтобы я мог l oop до и получить все события по дате.

    [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 голосов
/ 20 апреля 2020

Хорошо, я решил проблему. Я вернулся в функцию и изменил результаты файла, прежде чем он go превратился в массив.

$newfile = file_get_contents("theDataFile.ics");
$newfile = str_replace(';VALUE=DATE', '', $newfile);
$mycalendarvariable = $newfile;

Поскольку файл теперь находится в функции, я ничего не передаю myFunctionToGetData. Это просто

$events = myFunctionToGetData();

Возможно, это не самый элегантный способ сделать это, но это сработало.

0 голосов
/ 18 апреля 2020

Вы должны показать, что находится в $events и что выводится в виде сообщений об ошибках или окончательного вывода в вашем <pre> теге

У меня есть массив $ events ...

Если это массив, который необходимо перебрать в этом массиве, вы не можете использовать str_replace для массива.

<code>$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 ) . "
");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...