Depricated function ereg_replace is depricated
Ik heb al veel aanpassingen voor elkaar, maar hier kom ik dus momenteel niet uit.
De regel:
$field = ereg_replace ("\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
En de regel:
$field = ereg_replace ("\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
else
Heb ik gewijzigd in:
$field = preg_replace ("\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
else
en in:
$field = preg_replace ("\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
else
Maar nu moeten de backslashes /nog op de juiste plaats komen.
Helaas is mijn php kennis niet voldoende dit probleem op te lossen.
Enige hulp zou fijn zijn.
FOUTMELDING:
Warning: preg_replace() [function.preg-replace]: No ending delimiter '"' found in...../../../..
Groet.
Een Perl regular expressie heeft overigens een begin en eind delimiter. Meestal een zelfde teken.
B.v.:
/aap/ = matched aap in een tekst
/a+p/ = matched ook aap maar ook ap, aaap, aaaap, etc
/a+p/i = matched ook aap maar ook ap of aAap, aaaap, etc (hoofdletter ongevoelige versie, van die hier boven)
Gewijzigd op 18/06/2010 18:05:58 door Martijn B
$field = preg_replace ("\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
else
Bij:
$field = preg_replace ("/\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
else
Wellicht is het niet zo eenvoudig, maar nu geeft de foutmelding aan dat er nog maar 1 1 backslash nodig is.
Maar zoals ik typte je kunt ook:
Is ook nog sneller ook...
Gewijzigd op 18/06/2010 17:59:01 door Martijn B
******************************************************************
$field = preg_replace ("\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
else
{if (strrpos($csv_accum,chr(10)) == (strlen($csv_accum)-1)) $csv_accum .= "\"" . $field . "\"";
else $csv_accum .= "," . "\"" . $field . "\""; };
$link = '<a href="' . tep_href_link(FILENAME_ALL_CUSTOMERS, 'orderby=' . $order_criteria .'&sorted='. $to_sort) . '" class="headerLink">' . $title . '</a>';
return $link;
}
// Produce CSV string for output
function mirror_out ($field) {
global $csv_accum;
echo $field;
$field = strip_tags($field);
$field = preg_replace ("\"","\"\"",$field);
if ($csv_accum=='') $csv_accum= "\"" . $field . "\"";
else
{if (strrpos($csv_accum,chr(10)) == (strlen($csv_accum)-1)) $csv_accum .= "\"" . $field . "\"";
else $csv_accum .= "," . "\"" . $field . "\""; };
return;
*********************************************************
Ik zal mn mond houden...........
De 1e parameter is de regex.
Sommige mensen vinden het fijn om ~ als delimiter te gebruiken.
Dus dit kan ook:
Gewijzigd op 18/06/2010 18:11:01 door Martijn B
Ik heb de functie "voorbeeldje met gequote strings:"
gebruikt, en deze werkt perfect.
Ik heb inmiddels bijna alle fouten uit de shop, voorlopig nog 2 te gaan.
Maar daar ga ik eerst weer zelf naar zoeken, zo leer je elke keer weer wat.
Nogmaals bedankt voor je tijd en aandacht!!
Waarom negeer je de opmerkingen dat je geen regular expression hier nodig hebt? Je vervangt het ene teken met 2 andere tekens. str_replace kan dat prima, en nog veel sneller ook....
Mijn prioriteit was de productiesite zo snel mogelijk weer draaiende te krijgen.
Dit is gelukt door een van de oplossingen die geboden werd.
Allemaal bedankt voor jullie reacties en hulp, de overige 2 problemen heb ik inmiddels zelf opgelost.