Avatar billede groyk Novice
30. august 2007 - 09:08 Der er 9 kommentarer og
1 løsning

Søge i string [x]En eller anden text[y]

Hej Eksperter

hvordan søger efter tekst omringet med specifike tegn.

Jeg er klar over at jeg skal bruge regular_expresions, men er ikke så skarp inden for dette område.

Jeg skal bruge det til noget "e-html" ligende.

ex. input
$string = "Dette er en [A]Test[B], der kan [A]sagtens være[B] flere forekomster i samme string"

ønsket output
$string = "Dette er en 'Key Test Test', der kan 'Key sagtens være sagtens være' flere forekomster i samme string"

Dette er dog kun et eksempel.

Med ord vil jeg gerne hente teksten mellem [A] & [B] og der efter indsætte noget andet i stedet for inputtet.

Håber spørgsmålet er forståeligt.

mvh
Simon
Avatar billede olebole Juniormester
30. august 2007 - 14:24 #1
<ole>

Det behøver du ikke bruge regExp til:

$string = "Dette er en [A]Test[B], der kan [A]sagtens være[B] flere forekomster i samme string";

$string = str_replace("[A]", "'", $string);
$string = str_replace("[B]", "'", $string);

/mvh
</bole>
Avatar billede groyk Novice
30. august 2007 - 16:27 #2
Det er den metode jeg bruger nu, men jeg skal bruge teksten mellem [A] og [B] i en variabel. Da dette skal valideres.
Avatar billede olebole Juniormester
31. august 2007 - 19:29 #3
$string = "Dette er en [A]Test[B], der kan [A]sagtens være[B] flere forekomster i samme string";
preg_match_all("/\[A\]([^\[]*)\[B\]/", $string, $aMatches);

- så har du i $aMatches[0] et array af forekomsterne med 'tags' - og i $aMatches[1] ligger et array af forekomsterne mellem 'tags':
    array("Test", "sagtens være")
Avatar billede groyk Novice
31. august 2007 - 20:43 #4
Hej Ole

Ikke så ringe, men hvordan indsætter jeg så en anden tekst istedet?
[A]Test[B]
til ex.
Dette er en Test Test slut

Håber det giver mening det jeg skriver.
Avatar billede olebole Juniormester
01. september 2007 - 00:22 #5
Nu tror jeg, det er på tide, du fortæller, hvad det skal bruges til og hvordan. Ellers er det svært at vide, hvad der er en god løsning for dig  :)
Avatar billede groyk Novice
01. september 2007 - 19:47 #6
Hej Ole

Som skrevet tidligere skal det bruges til noget E-HTML.

Laver lige et par eksebpler herunder.
1. Eksempel (link til download)
Indput til database:
"en eller anden text[a]filnavn.xxx;LinkTekst[/a]noget mere tekst"
Output:
"en eller anden text <a href="filnavn.xxx">LinkTekst</a>* noget mere text"
* link skal KUN vises såfremt filen existere, det er det jeg skal bruge filnavn.xxx i en variabel til.

2. eksempel (liste)
Input til database:
"en eller anden text
[li]Overskrift
punkt 1
punkt 2
osv
[/li]
noget mere tekst"
Output:
"en eller anden text
<b>Overskrift</b>
<li>punkt 1</li>
<li>punkt 2</li>
<li>osv</li>
noget mere tekst"
Avatar billede olebole Juniormester
01. september 2007 - 20:17 #7
Umiddelbart ville jeg foreslå dig at bruge JSON i stedet, som er inkluderet i PHP5 - er platformsuafhængig - og direkte anvendelig i JavaScript. Så kan du bruge dine data på mange forskellige måder og du er fri for at skrive dine egne parsers.

Jeg har ingen idé om, hvad der i dit tilfælde er det bedste at bruge uden at vide, hvordan det skal anvendes - men du kan prøve at kikke på de andre preg-funktioner:
    http://dk.php.net/manual/da/ref.pcre.php

- bemærk links til de forskellige funktioner under 'Indholdsfortegnelse' lidt nede på siden
Avatar billede groyk Novice
02. oktober 2008 - 15:15 #8
Hej Ole

Kan du ikke smide et svar som tak for hjælpen?

Har prugt din løsning med preg_match_all()
Avatar billede olebole Juniormester
02. oktober 2008 - 15:41 #9
Gerne  =)
Avatar billede olebole Juniormester
02. oktober 2008 - 21:12 #10
- og tak for points  =)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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