Gå til innhold

[LØST]Hjelp til regex - sitering


Anbefalte innlegg

Skrevet (endret)

Hei, jeg lager et meldingssytem i ett av prosjektene mine. Når man quoter en tidligere person ser det slik ut:

 

@Brukernavn#InnleggNummer

 

Åssen kan jeg få dette til å se slik ut:

 

@<a href="#InnleggNummer">Brukernavn</a>:

 

Brukernavn kan inneholde alle mulige karakterer, InnleggNummer kan kun være tall

 

På forhånd takk, Thomas :)

 

|edit| Jeg har fått til uttrykket ^[@][^#]*[#][0-9]* men jeg sliter med replace-delen. Noen som har lyst til å hjelpe meg?

Endret av TheClown
Videoannonse
Annonse
Skrevet

Huff, så dum jeg er. Beklager allesammen. Løsningen ser slik ut:

 

$pattern = '/^@(\w+)#(\d+)/';
$replacement = "<a href='#$2'>$1</a>";

Skrevet

Hmm, ser ut som om det er noe feil i uttrykket mitt.

 

Den klarer @Brukernavn#1 helt fint, men @Bruker navn#1 går ikke. Hva er feil?

Skrevet

\w er alle tegn i et ord hvilket eksluderer blant annet mellomrom. Det vil gå bedre om man benytter . som betyr alle tegn (med unntak av linjeskift) ev. danne er en egen «klasse» [^#] som vil bety alle andre tegn enn #

Skrevet

Kort sagt: \w er en «klasse» med tegn som benyttes i ord. Dvs. primært A-Z + 0-9. Hvis du ønsker å godta mellomrom må du dermed benytte noe annet enn \w. Da kan du enten bytte ut \w med . eller danne en egen «klasse» med [^#] siden det er # er det tegnet du skiller navn og nummer med.

 

Mao. du kan bruke en pattern som ser slik ut:

/^@(.+)#(\d+)/

eller slik ut:

/^@([^#]+)#(\d+)/

 

PS: Utestet, men bør fungere.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...