Avatar billede zac Nybegynder
03. december 2009 - 00:03 Der er 8 kommentarer

Fra ereg_replace til preg_replace - der må være noget jeg slet ikke forstår...

Jeg har før PHP 5.3 brugt:
$tekst = ereg_replace("\n", "<br />", $tekst);

php.net siger:
string ereg_replace  ( string $pattern  , string $replacement  , string $string  )

Nu melder serveren altså "Function ereg_replace() is deprecated" - og helt væk fra PHP 6.

Prøver så med preg_replace i stedet for, skulle vel være ?? :
$string = preg_replace($patterns, $replacements, $string);

Hvorfor er det så ikke bare:
$tekst = preg_replace("\n", "<br />", $tekst);

Den melder "preg_replace() [function.preg-replace]: Empty regular expression".
Avatar billede repox Seniormester
03. december 2009 - 00:09 #1
Det er fordi de er ved at bevæge sig væk fra POSIX og vil fokusere mere på Perl Regular Expressions.
Det betyder at du skal bruge en mønster angivelse i stedet:

$tekst = preg_replace("/\n/", "<br />", $tekst);
Avatar billede zac Nybegynder
03. december 2009 - 21:31 #2
Tak.
Jeg kunne godt se, det nye havde noget med Perl udtryk at gøre - har nu søgt videre, og kan se, at du med "mønster angivelse" også mener /.../ som "pattern delimiters" i begyndelsen og enden af mønstret.
Avatar billede zac Nybegynder
03. december 2009 - 21:46 #3
Men hvad bliver denne

ereg($mask, $file)

i gammel POSIX formulering så til i ny Perl formulering?

Bliver det denne her:

preg_match('/$mask/', $file) -- ? -- ser ikke ud til at give fejl!

Jeg må se at få lært nogle helt grundlæggende ting om strenge og mønstre mv....
Avatar billede repox Seniormester
03. december 2009 - 21:55 #4
Du kan se her, hvordan det fremadrettet vil hænge sammen:
http://www.php.net/manual/en/migration53.deprecated.php

Og nej; istedet for "/$mask/" vil jeg anbefale at smide / med ind i $mask variablen fra starten om muligt.
Avatar billede zac Nybegynder
03. december 2009 - 23:05 #5
"..anbefale at smide / med ind i $mask variablen fra starten om muligt"

Hvad betyder det? vel ikke bare:

$mask = '/$mask/';
preg_match($mask, $file)

I http://php.net/preg-match er det bare preg_match($mask, $file) så vidt jeg forstår det.
Avatar billede repox Seniormester
03. december 2009 - 23:12 #6
Nej, din $mask er vel angivet et andet sted?

$mask = "/\n/";

preg_match($mask, $file);
Avatar billede zac Nybegynder
04. december 2009 - 00:05 #7
Ok, jeg må længere tilbage så, se hvor $mask kommer fra, men så længe preg_match($mask, $file) ikke giver fejl meddelelse, prøver jeg måske at gå lidt videre derfra.

Det hele begyndte med, at jeg ville prøve at lave et Drupal 6.14 CMS, og det bruger, selv om det er nyeste ikke-test version ereg($mask, $file) - som min PHP 5.3.0 (som er en del af en Wamp pakke!) siger er Deprecated (netop fra 5.3.x).

Har nu fundet på Drupal side: "PHP 5.3 is not currently supported by Drupal 6.x" - anbefaler PHP 5.2.x - så måske jeg skal gå over til den version.

Ak ja...Men tak for hjælpen
Avatar billede repox Seniormester
04. december 2009 - 08:44 #8
Du kunne også - som udgangspunkt slå meddelelser om deprecated funktioner fra.
Fra Drupal 7 (når den snart kommer) skulle der være taget højde for de funktioner.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester