Avatar billede fangel Nybegynder
12. maj 2002 - 15:13 Der er 14 kommentarer og
1 løsning

regexp

Hej

jeg skal bruge et script der kan skifte
*[et eller andet]*

ud med

<img src="[et ellet andet]" alt="*[et ellet andet]*">

hvor [et eller andet] er det samme alle steder...

ved man kan lave det med eregi_replace() (tror jeg den hedder) men jeg er ikke så stærk til regexp...

en lille guide til regexp ville også være dejligt, da jeg ikke fatter sa meget af PHP manualen... (dette høre dog ikke med til selve spm...)

Dea_PG
Avatar billede invisibleman Nybegynder
12. maj 2002 - 15:20 #1
<?php
  $text = "Her er et billede: *image01.gif*";
  $text = preg_replace("/\*(.*)\*/iU", "<img src=\"\\1\" alt=\"*\\1*\">", $text);
?>

Ikke testet, men det *burde* virke :D
Avatar billede invisibleman Nybegynder
12. maj 2002 - 15:22 #2
NU er det testet og det virker fint :)
Avatar billede fangel Nybegynder
12. maj 2002 - 15:23 #3
hov, hvis det skal være

<img src="[et ellet andet].gif alt="*[et ellet andet}*"> skal det så være

preg_replace("/\*(.*)\*/iU", "<img src=\"\\1\.gif" alt=\"*\\1*\">", $text);

og har du et link til en guide til regexp ?

Dea_PG
Avatar billede invisibleman Nybegynder
12. maj 2002 - 15:31 #4
Helt korrekt :)

Desværre ikke ... jeg er selvlært i regexp så jeg har ik rigtigt nogle gode referencer andet end PHP manualen til det :/
Avatar billede fangel Nybegynder
12. maj 2002 - 15:35 #5
hvordan fann lære man sådan noget ? der er får mange /'er og \'er til jeg kan følge med... hæhæ

nu skal du få dine point...

Dea_PG
Avatar billede fangel Nybegynder
12. maj 2002 - 15:39 #6
lavede det lige til en funktion:

funtione lav_smileys($text) {
preg_replace("/\*(.*)\*/iU", "<img src=\"\\1\.gif" alt=\"*\\1*\">", $text);
return $text;
}

Dea_PG
Avatar billede fangel Nybegynder
12. maj 2002 - 15:40 #7
hov,

function lav_smileys($text) {
preg_replace("/\*(.*)\*/iU", "<img src=\"\\1\.gif" alt=\"*\\1*\">", $text);

return $text;
}
Avatar billede invisibleman Nybegynder
12. maj 2002 - 15:55 #8
I regexp betyder . (punktum) "ethvert tegn" og * at "det" (det foregående tegnsæt, eller subpattern) skal optræde mindst 0 gange.

Og da du i din tekst bruger * til at angive at der er et billede, så skal * i regexp'en escapes med \ .. ligesom du escaper " i strenge med \".

Lad os splitte den op:

/
  \*
  (
    .*
  )
  \*
/
i
U

/ i starten og slutningen betyder bare at der er en regexp imellem.
i og U er to indstillinger der betyder: i = case insensitive, U = "ungreedy", dvs. den matcher det MINDST mulige.

"her er et billede *image01* og et til *image02*"

hvis "U" _IKKE_ var angivet ville regexp'en "finde":

"image01* og et til *image02"

istedet for:

"image01" og "image02".

\* betyder at vi skal matche * som et tegn, og ikke at den skal matche en backslash flere gange (det ville være \\* (escape af \ og så *)

.* betyder at den skal finde "ethvert tegn" minimum 0 gange (intet max.). Hvis du ville finde f.eks. "....." (altså flere punktummer) skulle du escape punktummet således:

\.*

() rundt om betyder at den "gemmer" det den finder imellem parenteserne, så du kan bruge det i en replace med \\1, \\2 osv. (\\0 indeholder hele strengen der blev matchet)

() kan også betyde at den skal matche "enten eller.."

(image|img)[0-9]

ville f.eks. betyde at den ville finde BÅDE "image4" OG "img2". Du kan tilføje flere "eller" strenge ved at adskille dem med |.

Man kan også bruge "tegnsæt" til at matche f.eks. tal osv.:

\*([a-z0-9]+)\*

ville f.eks. kun matche strenge mellem *'er, der indeholdte tegnene a-z samt 0-9. (og mindst 1 af dem. + er 1, eller flere, og * 0 eller flere.)

Jeg håber det hjalp lidt på forståelsen af det :)
Avatar billede invisibleman Nybegynder
12. maj 2002 - 15:57 #9
function lav_smileys($text) {
preg_replace("/\*(.*)\*/iU", "<img src=\"\\1\.gif" alt=\"*\\1*\">", $text);

return $text;
}

skal være:

function lav_smileys($text) {
    $text = preg_replace("/\*(.*)\*/iU", "<img src=\"\\1\.gif" alt=\"*\\1*\">", $text);

    return $text;
}
Avatar billede gizmo-gizmo Nybegynder
12. maj 2002 - 16:26 #10
dea_pg -> Der en lang artikel på www.phpbuilder.net hvor det hele bliver forklaret. Er også selv ved at få de reg. exp lært :)
Avatar billede fangel Nybegynder
12. maj 2002 - 17:06 #11
invisibleman => tak for rettelsen og for forklaringen...

gizmo => det link vil jeg kikke lidt på...

Dea_PG
Avatar billede gizmo-gizmo Nybegynder
12. maj 2002 - 17:14 #12
Avatar billede fangel Nybegynder
12. maj 2002 - 17:16 #13
OK, tak
Avatar billede gizmo-gizmo Nybegynder
12. maj 2002 - 17:18 #14
Your Welcome :)
indså lige, at siden er lidt indviklet
Avatar billede fangel Nybegynder
12. maj 2002 - 17:20 #15
hæhæ, jeg tror det går... hæhæ
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