Avatar billede melange Nybegynder
01. december 2002 - 11:38 Der er 7 kommentarer og
1 løsning

match <kode> og </kode>

hvordan matcher jeg alt som står mellem <kode> og </kode>
den skal match *først gang* <kode> optræder, den skal ikke være "greedy". Desuden skal der også kunne forekomme et linjeskift (\n) før <kode>
Avatar billede morw Nybegynder
01. december 2002 - 11:48 #1
Skal du finde eller erstatte noget? I hvilket sprog?

$pat = "|<kode>(.*)</kode>|Uism";
Avatar billede melange Nybegynder
01. december 2002 - 11:55 #2
Det er i PHP.
Og jeg har en lang streng som indeholder X antal <kode> og </kode> tags, og hvor jeg gerne vil match den første. (kun den første! det er meningen at den bare lopper igennem, og finde <kode> og </kode> tags'ne en efter en.)
Avatar billede morw Nybegynder
01. december 2002 - 12:06 #3
$contents = "Din tekst...."

$pat = "|<kode>(.*)</kode>|Uism";

preg_match_all($pat, $contents, $out, PREG_SET_ORDER);

print_r($out);

Så skal du bare bruge det første array-element i $out
Avatar billede melange Nybegynder
01. december 2002 - 13:08 #4
Mange tak, det virker perfekt :D

men kan jeg ikke lige få en lille forklaring af koden ? (så kan du samtidig smide et svar)

1) hvorfor stater og slutter du med | betyder det noget, eller er der bare i stedet for / ?

2) Uism ? hvad betyder det ? i ved jeg godt hvad betyder, men hvad med de andre ?
Avatar billede morw Nybegynder
01. december 2002 - 13:13 #5
Nogle gange bruger jeg | | andre gange / /. Ved ikke rigtig hvad forskellen er.


U er ungreedy
i caseless
m er multilinie
s dotall (. fanger også newlinie)
Avatar billede morw Nybegynder
01. december 2002 - 13:14 #6
Avatar billede morw Nybegynder
01. december 2002 - 13:29 #7
Jeg kan se at det stort set er lige meget om man bruger / eller |

The syntax for patterns used in these functions closely resembles Perl. The expression should be enclosed in the delimiters, a forward slash (/), for example. Any character can be used for delimiter as long as it's not alphanumeric or backslash (\). If the delimiter character has to be used in the expression itself, it needs to be escaped by backslash. Since PHP 4.0.4, you can also use Perl-style (), {}, [], and <> matching delimiters.

fra: http://www.php.net/manual/en/ref.pcre.php
Avatar billede melange Nybegynder
01. december 2002 - 14:43 #8
jeg takker endnu en gang, og lukker
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
Kurser inden for grundlæggende programmering

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