Depricated function ereg_replace is depricated

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Harold Habibu

Harold Habibu

18/06/2010 15:39:02
Quote Anchor link
Met de komst van php5.3 moet onderstaande php code binnen mijn site veranderd worden in preg_replace.
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.
 
PHP hulp

PHP hulp

04/02/2023 06:06:21
 
Joren de Wit

Joren de Wit

18/06/2010 16:17:37
Quote Anchor link
Houd er rekening mee dat de syntax van je reguliere expressie anders is bij preg_match(). Zie: http://nl2.php.net/manual/en/reference.pcre.pattern.syntax.php
 
Martijn B

Martijn B

18/06/2010 17:47:55
Quote Anchor link
Volgens mij kun je dit ook met str_replace() doen.

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
 
Harold Habibu

Harold Habibu

18/06/2010 17:55:18
Quote Anchor link
Ik heb een backslash geplaatst in onderstaande regel:

$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.
 
Martijn B

Martijn B

18/06/2010 17:58:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$field
= preg_replace ('/"/','""',$field);
?>


Maar zoals ik typte je kunt ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$field
= str_replace ('"','""',$field);
?>


Is ook nog sneller ook...
Gewijzigd op 18/06/2010 17:59:01 door Martijn B
 
Harold Habibu

Harold Habibu

18/06/2010 18:07:24
Quote Anchor link
Misschien is het handig de hele php code te publiceren, ik wist dat er een begin en een eind delimiter in moet, maar waar............daar kom ik dus niet uit.
******************************************************************

$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;


*********************************************************
 
Harold Habibu

Harold Habibu

18/06/2010 18:08:37
Quote Anchor link
Sorry we typen tegen elkaar in.
Ik zal mn mond houden...........
 
Martijn B

Martijn B

18/06/2010 18:09:37
Quote Anchor link
Ok, dan ook een voorbeeldje met gequote strings:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$field
= preg_replace ("/\"/","\"\"",$field);
?>


De 1e parameter is de regex.

Sommige mensen vinden het fijn om ~ als delimiter te gebruiken.

Dus dit kan ook:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$field
= preg_replace ("~\"~","\"\"",$field);
?>
Gewijzigd op 18/06/2010 18:11:01 door Martijn B
 
Harold Habibu

Harold Habibu

18/06/2010 22:42:16
Quote Anchor link
Dank je wel Martijn.

Ik heb de functie "voorbeeldje met gequote strings:"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$field
= preg_replace ("/\"/","\"\"",$field);
?>

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!!
 
Willem Jan Z

Willem Jan Z

19/06/2010 09:32:29
Quote Anchor link
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....
 
Harold Habibu

Harold Habibu

20/06/2010 11:17:15
Quote Anchor link
Ik heb de opmerking niet zozeer genegeerd, en zeker gelezen en opgeslagen in mijn Brein.
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.