Avatar billede durd Nybegynder
26. november 2003 - 17:42 Der er 12 kommentarer og
2 løsninger

Find and replace

Jeg har en kæmpe hjemmeside som jeg skal have opdateret til den nyeste php version. Jeg tænkte om det måske kunne lade sig gøre at rette den dårlige kode med "Find and replace" i et eller andet godt tekst-redigeringsprogram.

Jeg skal bl.a. have rettet alt hvor der står noget med $row[forskelligt] til $row['forskelligt']

Jeg har bare lidt svært ved at finde ud af hvordan det kan gøres smartest.

Man kan nemlig ikke replace sådan her:

Replace det her:
[*.*]

Med:
['*.*']

*.* plejer at stå for alt, og nu da det ikke virker, ved jeg ikke hvordan det gøres. Håber I kan hjælpe mig???
Avatar billede googolplex Novice
26. november 2003 - 17:54 #1
Hvad med bare at replace [ med [' samt ] med
'] ?
Avatar billede jakoba Nybegynder
26. november 2003 - 18:03 #2
jo du kan faktisk godt bygge videre på den ide og få det til at virke. men du skal bruge de regulære expressions korrekt. og uheldigvis har du valgt bogstaver der allesammen har en specil betydning:

[ og ] omkranser et udvalg af forskellige mulige bogstaver
*  betyder  'det foran skal dtå der 0 til såmange gange det skal være'
.  kender du allerede.

\  er escape, tegnet efter skal IKKE ses som specialtegn med som det tegn der står.
( og ) betyder "husk hvad vi fandt herimellem"

så din replace skal være noget i retning af:

  ereg_replace( "\[(.+)\]", "['\\1']", $langstrengduvilreplacei );

men pad på, for du kan ikke stole ret meget på den, der er fx steder hvor indexværdien bliver beregnet:
    $etarray[ 25 + (3/4) ];
ovenstående vil sætte ' og ' omkring
    $etarray[' 25 + (3/4) '];
og så duer den udregning overhovedet ikke

Der er også andre måder det kan gå galt, mange nok til at jeg vil fraråde dig at gøre det overhovedet.

mvh JakobA
Avatar billede durd Nybegynder
26. november 2003 - 18:10 #3
JakobaA!
Hvordan havde du tænkt dig at jeg skulle bruge det så?

Hvis jeg f.eks. tager en teksteditor og replacer "\[(.+)\]" med "['\\1']" eller hvad?
Avatar billede amix Nybegynder
26. november 2003 - 19:15 #4
Nej.
Lav et Perl eller PHP script som løber alle dine filer igennem og rette det der skal rettes - - - ved at bruge regexp...
Avatar billede amix Nybegynder
26. november 2003 - 19:17 #5
Der findes nok nogle teksteditors / søge redskaber som understøtter regexp's

Men du kan ligeså godt bruge PHP til det...
Avatar billede Slettet bruger
26. november 2003 - 20:02 #6
Jeg vil anbefale at bruge en teksteditor med søg/erstat, således at du kan kontrollere alle steder om det skal erstattes. Brug JakobAs regexp til det.

Det er alt for bøvlet at skulle lave en regexp, der kan tage hensyn til alle de mulige kombinationer, hvor der ikke skal anførselstegn. Så tager det (selv med et stort projekt) kortere tid at svare ja/nej til editorens erstat-spørgsmål.
Avatar billede amix Nybegynder
26. november 2003 - 20:28 #7
Det vil jeg ikke mene! Han søger jo en smart måde at gøre det på...

Og det er ikke særligt svært at lave et regex som tjekker om [] ligger inde et '' eller et ""
Avatar billede Slettet bruger
26. november 2003 - 20:45 #8
Amix: Nej, men det er svært at lave en regex, der kan tage hensyn til følgende muligheder:

$array[$a . $b]
$streng="<a href='{$array[$a]}'>"
$array[7+$a]
$array[$array2[$a]]

Det begynder at blive noget med en rekursiv ekspression, og de kan være hulens svære at få til at makke ret. (Som du selv ved af personlig erfaring)

Jeg vil heller svare ja/nej en flok gange, og være sikker end risikere at skulle sidde flere dage og prøve at debugge et automatrette script.

mvh Ole Hansen
Avatar billede durd Nybegynder
07. december 2003 - 23:37 #9
Vil det så sige at jeg er "fucked"?

Det vil tage AAAALT for lang tid at rette ALT koden til, så det her er min eneste løsning. :(
Avatar billede Slettet bruger
08. december 2003 - 00:53 #10
Nej, du er ikke fucked.

Men du er nok (som jeg sagde 26/11-2003 20:02:32) nødt at bruge en regexp i en editor og undlade at sætte den på "autopilot"
Avatar billede Slettet bruger
08. december 2003 - 00:54 #11
Men find først en editor, som kan anvende rigtige regexps.
Avatar billede durd Nybegynder
16. december 2003 - 18:10 #12
ja okay, men jeg føler mig stadig ikke vildt meget klogere end da jeg stillede spørgsmålet. kom lige med nogen svar så jeg kan give points. jeg giver ikke fuld point til nogen da jeg ikke føler at jeg har fået et helt klart svar på hvordan jeg skal gøre det.
Avatar billede Slettet bruger
17. december 2003 - 00:04 #13
Du skal have en editor, der understøtter rigtige regexps.

søg efter: \[(.+)\]
erstat med: ['\\1']

Og lad være med at vælge "Ja til alle", men se efter, at den erstatter de rigtige steder.

Dette er bare en omskrivning af, hvad jakoba skrev 26/11-2003 18:03:56
Avatar billede durd Nybegynder
02. januar 2004 - 17:28 #14
:)
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