|
| str_replace Fra : Lobais |
Dato : 27-09-03 16:01 |
|
Hej,
Hvad skal jeg skrive mellem <andet> for at flytte det, der står
mellem <noget> derind?
str_replace ("<noget>(.*?)</noget>", "<andet></andet>", $string);
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Peter Brodersen (27-09-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 27-09-03 16:09 |
|
On Sat, 27 Sep 2003 15:00:58 +0000 (UTC), Lobais <1@3.be> wrote:
>Hvad skal jeg skrive mellem <andet> for at flytte det, der står
>mellem <noget> derind?
>
>str_replace ("<noget>(.*?)</noget>", "<andet></andet>", $string);
For det første skal du ikke bruge str_replace (der bare er en
almindelig søg&erstat), men preg_replace. Alternativt ereg_replace,
men den vil ikke æde (.*?)-konstruktionen.
... og du skal bruge \1 (hvilket skrives \\1 i quotes), fx:
$string=preg_replace('_<noget>(.*?)</noget>_','<andet>\\1</andet>',$string);
--
- Peter Brodersen
Ugens sprogtip: i dag (og ikke idag)
| |
Peter Brodersen (27-09-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 27-09-03 16:10 |
|
On Sat, 27 Sep 2003 17:08:31 +0200, Peter Brodersen <usenet@ter.dk>
wrote:
>.. og du skal bruge \1 (hvilket skrives \\1 i quotes), fx:
>
>$string=preg_replace('_<noget>(.*?)</noget>_','<andet>\\1</andet>',$string);
... alternativt $1, fx:
$string=preg_replace('_<noget>(.*?)</noget>_','<andet>$1</andet>',$string);
--
- Peter Brodersen
Ugens sprogtip: i dag (og ikke idag)
| |
Peter Brodersen (27-09-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 27-09-03 16:13 |
|
On Sat, 27 Sep 2003 17:10:17 +0200, Peter Brodersen <usenet@ter.dk>
wrote:
>>$string=preg_replace('_<noget>(.*?)</noget>_','<andet>\\1</andet>',$string);
>
>.. alternativt $1, fx:
>
>$string=preg_replace('_<noget>(.*?)</noget>_','<andet>$1</andet>',$string);
... og bare for at rydde helt op i mit ævl :) Så vil der heller ikke
være nogen problemer i enkeltquotes ved at bruge \1 (fordi \ ved
enkeltquotes kun har betydning, hvis det står foran \ eller ' ):
$string=preg_replace('_<noget>(.*?)</noget>_','<andet>\1</andet>',$string);
Dog vil det så ikke virke med dobbeltquotes:
// virker ikke
$string=preg_replace('_<noget>(.*?)</noget>_',"<andet>\1</andet>",$string);
--
- Peter Brodersen
Ugens sprogtip: i dag (og ikke idag)
| |
Lobais (27-09-2003)
| Kommentar Fra : Lobais |
Dato : 27-09-03 18:55 |
|
Peter Brodersen wrote in dk.edb.internet.webdesign.serverside.php:
> On Sat, 27 Sep 2003 15:00:58 +0000 (UTC), Lobais <1@3.be> wrote:
>
> >Hvad skal jeg skrive mellem <andet> for at flytte det, der står
> >mellem <noget> derind?
> >
> >str_replace ("<noget>(.*?)</noget>", "<andet></andet>", $string);
>
> For det første skal du ikke bruge str_replace (der bare er en
> almindelig søg&erstat), men preg_replace. Alternativt ereg_replace,
> men den vil ikke æde (.*?)-konstruktionen.
Men, hvis jeg bruger preg_replace vil den så gøre det for hver gang den møder
<noget> eller kun første gang?
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Peter Brodersen (27-09-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 27-09-03 19:17 |
|
On Sat, 27 Sep 2003 17:55:16 +0000 (UTC), Lobais <1@3.be> wrote:
>Men, hvis jeg bruger preg_replace vil den så gøre det for hver gang den møder
><noget> eller kun første gang?
Den vil gøre det for hver gang. g-modifieren er default.
--
- Peter Brodersen
Ugens sprogtip: i dag (og ikke idag)
| |
Christian Joergensen (27-09-2003)
| Kommentar Fra : Christian Joergensen |
Dato : 27-09-03 19:22 |
|
On Sat, 27 Sep 2003 20:17:11 +0200, Peter Brodersen wrote:
>>Men, hvis jeg bruger preg_replace vil den så gøre det for hver gang den møder
>><noget> eller kun første gang?
>
> Den vil gøre det for hver gang. g-modifieren er default.
Kan evt. inverteres med 'U' modifieren
--
Christian Jørgensen | Never test for a bug you don't know how to fix.
http://www.razor.dk |
| |
Peter Brodersen (27-09-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 27-09-03 20:01 |
|
On Sat, 27 Sep 2003 20:21:59 +0200, Christian Joergensen
<mail@phpguru.dk> wrote:
>> Den vil gøre det for hver gang. g-modifieren er default.
>Kan evt. inverteres med 'U' modifieren
Jeg tror, du blander "greedy" og "global" sammen.
"g" (i perlsprog) betyder, at erstatningen foretages mere end første
gang.
"U" betyder, at en quantifier ikke er greedy. Med andre ord, følgende
er ens:
$string=preg_replace('_<noget>(.*?)</noget>_','<andet>$1</andet>',$string);
$string=preg_replace('_<noget>(.*)</noget>_U','<andet>$1</andet>',$string);
... men begge matcher alle gange.
--
- Peter Brodersen
Ugens sprogtip: i dag (og ikke idag)
| |
|
|