Вам необходимо отписаться от события в OnDisappearing
protected override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<UploadImagePopupPage>(this, "complete");
}
Вот моя быстрая попытка его, хотя это будет только работать над границами слова.
preg_replace('/([\W]){2}\b/', '\1', $csv)
Почему Вы потрудились разделять файл с regex, когда существует функция fgetcsv, которая делает всю тяжелую работу для Вас?
Можно передать в разделителе и разделителе, и он обнаружит, что сделать.
Я соглашаюсь с другими, кто сказал, что необходимо использовать функцию fgetcsv вместо regexes. regex может работать хорошо над правильно построенными данными CSV, но если CSV будет уродлив или поврежден, то regex тихо перестанет работать, вероятно, возвращая поддельные результаты в процессе.
Однако вопрос был конкретно о разделении нежелательных кавычек после начального разделения. Одно предлагаемое решение (до сих пор) слишком наивно, и оно только имеет дело завершенные кавычки в поле, не фактические разделители. (Я знаю, что OP не спрашивал о тех, но они должны быть удалены, итак, почему бы не их в том же как другие?) Вот мое решение:
$csv_field = preg_replace('/"(.|$)/', '\1', $csv_field);
Этот regex соответствует кавычке, сопровождаемой любым символом или к концу строки, и заменяет подобранный символ (символы) вторым символом, или пустой строкой, если это было $
это соответствовало. Согласно спецификации, поля CSV могут содержать разделители строки; этого, кажется, не происходит очень, но можно добавить' модификатор к regex, если Вы должны.
Для тех из вас, кто не хочет использовать регулярное выражение вместо fgetcsv. Вот полный пример того, как создать таблицу html из csv с помощью регулярного выражения.
$data = file_get_contents('test.csv');
$pieces = explode("\n", $data);
$html .= "<table border='1'>\n";
foreach (array_filter($pieces) as $line) {
$html .= "<tr>\n";
$keywords = preg_split('/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/', $line,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach ($keywords as $col) {
$html .= "<td>".trim($col, '"')."</td>\n";
}
$html .= "</tr>\n";
}
$html .= "</table>\n";