10. januar 2006 - 13:04Der er
25 kommentarer og 1 løsning
Ændre/erstatte NÆSTEN éns tekstblokke i et hug?
SÅ! Nu kan i score lidt p og spare mig for dagevis af (idiotisk) slavearbejde i fremtiden.
Er der nogen der kender en metode til at ændre/erstatte alle forekomster af en given type tekst (eg. hyperlinks til samme fotoalbum) som ikke er identiske (eg. forskellig fotos i albummet).
lad os sige der står: <a href="06_01-06.1.59__21.08.jpg"> (....) <a href="06_01-06.1.59__21.12.jpg">
Disse - og alle dem der ligner - skal ændres til en fast tekst (eg. <a href="out of order.htm">)
Og erstatningskoden skal så baseres på en eller anden wildCard funktion (eg. replace <a href="06_01-06.1.59__****"> with <a href="out of order.htm">). Men kan det lade sig gøre?
Der er 2 forbehold: Det må ikke koste noget (nævneværdigt) OG det må ikke ende med at tage længere tid (efter en intro-fase om nødvendigt).
skelboe>> det lyder som om det kan lade sig gøre andre steder? I givet fald, hvilke?
Hvis noget med at kopiere hele indholdet ind i et alternativt format kan virke, så er det absolut en vej frem... det her er noget jeg kommer til at bruge oceaner af tid på - så bare fyr løs :-)
Det ligger som ren HTML - i hvert fald de dele jeg får brug for at redigere. Med mit nuværende PHP-knowHow er det ikke vildt realistisk, at jeg skulle kunne scripte mig ud af det, men man ved aldrig. ASP er totalt uudforsket, så det er endnu længere væk.
Tror jeg havde forestillet mig - og gør det for så vidt endnu - at der ku' findes en tekst-editor (ala Word) som ville kunne gøre det. Men det er muligvis for optimistisk. Bare provokerende, da både Dreamweaver, Word og endda Frontpage kan søge efter forekomster af gentagne tekstenheder - og kan erstatte i et hug. Der mangler "bare" wildCard funktionen.
Nu sidder jeg ikke lige med en DW her, men jeg mener da, den kan søge og erstatte med mønstre. Min Homesite editor kan - og det mener jeg, de fleste seriøse editors kan. Problemet er naturligvis så, at du skal kunne RegExp (regulære udtryk).
Hvis du kan opstille specifikke regler for, hvad du mener med 'alle dem, der ligner', kan jeg eller en anden godt skrive en RegExp, du kan bruge :)
Det kunne godt ligne vejen til point. Har tjekket DW og der er mulighed for find'n'replace med "UseRegularExpressions". Så er der altså fornyet håb.
Det er ikke helt let at vurdere hvad 'specifikke regler' indebærer (endnu), men hvis du kunne lave en RegExp som løser lige dét ovenstående (fotoalbum) problem, kan jeg i mellemtiden prøve at finde lidt info om RegExp. Så kan jeg måske selv udvikle din løsning med tiden.
Hehe ... der var jeg vist lidt rapkæftet. Det viser sig, at i hvert fald Homesite bruger en speciel type RegExp ... jeg ved ikke, hvordan det ligger med DW.
Hvis din server understøtter PHP, kan jeg skrive et PHP-script til dig, der åbner alle filer i en mappe - retter de ønskede links - og gemmer filerne igen. Så kunne du jo have en 'fix_links'-mappe, du midlertidigt kan smide filer i og 'reparere' dem.
Hmmm. Tygger lige på det - har 2 unger der står op ca. 06:11 - så jeg skal like ha' lidt lukøje. Tjekker ind imorgen. PHP over server måske ikke umuligt (understøttes, yep) men det er ikke oplagt af flere grunde... men jeg tygger på det.
Godnat i cyberspace (DAMN! Man er blevet gammel når man stadig bærer rundt på det begreb :-) )
olebole > Jeg sidder med en Drømmevæver 8, og så vidt jeg kan se benytter den standard POSIX regex format (svarende til PHP's ereg). Der bruges $1, $2 osv i replace feltet til at indsætte matches.
Damn den er smart. Den har gudhjælpemig en replace funktion til at erstatte indholdet af bestemte atributter i bestemte tags. Så skal man kun finde på et regex der matcher filnavnet :o)
Hvis det kan forklares for tilfældet overfor <a href="06_01-06.1.59__21.08.jpg"> - hvor der er gentagne poster der varierer over det samme tema <a href="06_01-06.1.59__"X""X"."X""X".jpg"> - så er jeg en glad campist.
Udtrykket du skal søge efter er: 06_01-06\.1\.59__\d{2}\.\d{2}
En lille forklaring er nok på sin plads. I regex betyder punktum (uden backslash foran) at den matcher et hvilket som helst tegn. Derfor er punktummerne "escapet" med backslash (\). For at matche et 2-cifret tal bruger jeg udtrykket \d{2}. \d betyder at den leder efter et tal, og det efterfølgende {2} fortæller at der skal være 2 af dem.
Tester det MEGET snart, men kast et svar på banen og så vender jeg tilbage med pointTildeling.
olebole (og rednex, for så vidt)> ved ikke om du er point-hungrende, men jeg skal gerne bruge 5 minutter på god karma - men det forekommer mig, at der er mange eksperten brugere der går mere op i problemløsning end point/karma?
For mit vedkommende betyder point ikke så meget, så vi kan jo nok finde ud af at dele :o)
Karma synes jeg siger mere da det jo er "ekstra arbejde", og jeg bilder mig ind at det siger mere om hvor glad (eller sur) spørgeren er for det svar han har modtaget.
Men i sidste ende, så er det vigtigste vel at problemet bliver løst :o)
Det virker jo. Og jeg tror jeg er ved at ha' luret systemet - en udemærket (help-) oversigt over regExp's i Dreamweaver MX... der selvfølgelig har en irriterende anderledes Find/Replace-menu end rednex' DM8 http://exp.tgltech.dk/678389/screenshot.jpg.
Point ryger afsted hér - og god karma distrubueres snarligt
Sorry, jeg har været lidt fraværende, men jeg har haft travlt med andre ting :)
Problemet er, at der er flere forskellige slags RegExp med forskellig syntaks - og POSIX-typen bruger jeg f.eks. aldrig. For det første slæber POSIX gevaldigt med fødderne under PHP (her performer Perl-RegExp langt bedre) - og da man også bruger Perl's syntaks under JavaScript, JScript og VB - tja såååhhh ...... ;o)
Hehe ... resultatet blev, at jeg har skrevet et lille (7 kb med interface und alles) JScript-program, der kan søge/erstatte med Perl-RegExp i udvalgte filer i en mappe - oprette en ny mappe '__Replaced Files__' og gemme de rettede filer heri :)
OBS. Jeg skynder mig lige at rette min egen kommentar [12/01-2006 10:38:17] : DM_MX-Find/Replace-interface ER det samme, men først når man har valgt at søge på "specific tag"
Hehe ... ja, det er ikke helt kedeligt :) Normalt kan man ikke få JScript/JavaScript til at tilgå filSystemObjektet fra et alm. webdokument. Det kan derimod lykkes fra en HTA (HyperText Application), som er en special instans af IE - men med andre sikkerheds indstillinger. Samtidig ligner den til forveksling en ganske almindelig Windows applikation. Referencen ligger her: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/hta/hta_node_entry.asp
Desværre/heldigvis vil bl.a. Norton AntiVirus nægte ethvert JScript at tilgå filSystemObjektet ... også fra en HTA. Dog kan man 'lære' NAV, at den skal tillade et bestemt script - men det kan i visse situationer være besværligt. Jeg kender til gengæld et lille 'stealth-trick', så man kan 'snige sig under' NAV fra en HTA - men den vil jeg af gode grunde ikke hænge op her ;o) Er du (og ikke andre) interesseret i en kopi, kan du lægge din e-mail-adresse, så skal jeg sende dig en.
Tror lige jeg står af hér. Som udgangspunkt virker løsningen via Dreamweaver - og jeg er PHP/MySQL/javascript-pseudo-rookie (ENDNU!) - så det varer lige lidt før NAV, HTA og andre lækkerier kommer på dagsordenen.
Men måske du - eller andre - kan forklare mig hvad jeg skal gøre (i Dreamweaver dialogen) hvis jeg vil bruge RegExp og der indgår backslash'es (eg. <a href="pictures/06_01-06.1.59__21.08.jpg">) i de tekst-forekomster jeg vil ændre?
Hehe ... det er nu en slash - og ikke en backslash ;o) Det er ret vigtigt med den forskel, da en slash (ligesom et punktum) skal escapes med en backslash i RegExp: pictures\/\d{2} ... osv, osv :)
Synes godt om
Ny brugerNybegynder
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.