[php] regex waarde achterhalen dmv backreferences

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb de volgende regex

PHP:
1
$file[$j] = ereg_replace('<br><br>([a-zA-Z-]*[ ]?[-]?[//]?[ ]?[a-zA-Z\-]*[ ]?[-]?[//]?[ ]?[a-zA-Z\-]*)<br>','<br><br><b>$1</b><br>',$file[$j]);

Deze werkt, alleen nu wil ik op die plek van die $1 de waarde van het volgende hebben:
PHP:
1
([a-zA-Z-]*[ ]?[-]?[//]?[ ]?[a-zA-Z\-]*[ ]?[-]?[//]?[ ]?[a-zA-Z\-]*)


ik probeer het al de hele tijd, maar elke keer werkt de expressie niet meer, of geeft hij gewoon $1 weer.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Kan je misschien vertellen wat je ongeveer wil matchen aangezien het mij niet echt duidelijk is zo (ook aangezien GoT de regex niet duidelijk wil laten zien).
Je begint met 2x een br, gevolgd door wat letters, daarna een spatie, -, nog een spatie en weer letters....

Misschien als je verteld wat de bedoeling is dat ik dan een eenvoudigere regex kan maken want ik heb het idee dat dit simpeler moet kunnen.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nu moet hij duidelijker zijn, heb van de / een // gemaakt.

De bedoeling is dat hij het volgende matched

<br><br>tekstmetbepaaldecarakters<br>

en dit vervangt door

<br><br><b>tekstmetbepaaldecarakters</b><br>

Hij matched ze wel, maar maakt er nu
<br><br><b>$1</b><br>

van

[ Voor 13% gewijzigd door Verwijderd op 01-02-2007 16:35 ]


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Zou dit ook goed genoeg werken?

PHP:
1
2
3
$data = '<br><br>tekstmetbepaaldecarakters<br>';
$regex = '%<br><br>([^<]*)<br>%i';
echo preg_replace($regex, '<br><br><b>\1</b><br>', $data);

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit werkt inderdaad, kan het niet met de ereg_replace?

Op een of andere manier kreeg ik die referentie er niet in

Acties:
  • 0 Henk 'm!

Verwijderd

Zo te zien gebruik je single quotes om te replacen. (zie http://nl3.php.net/print voor verschil tussen double-single quotes).

Wanneer je dit aanpast door double quotes zou 't moeten werken.
Doe 't uit m'n hoofd, dus weet niet zeker, maar 't zou ook kunnen dat je $1 door \\1 moet aanpassen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke, in ieder geval bedankt voor de info, de andere methode werkt ook goed

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Verwijderd schreef op donderdag 01 februari 2007 @ 16:44:
Dit werkt inderdaad, kan het niet met de ereg_replace?

Op een of andere manier kreeg ik die referentie er niet in
Met ereg_replace kan het ook, maar ik gebruik bij voorkeur preg_replace omdat PCRE een stuk uitgebreider (en imho universeler) is dan POSIX regex.

Maargoed, de ereg versie:
PHP:
1
2
3
$data = '<br><br>tekstmetbepaaldecarakters<br>';
$regex = '<br><br>([^<]*)<br>';
echo ereg_replace($regex, '<br><br><b>\1</b><br>', $data);

Blog [Stackoverflow] [LinkedIn]

Pagina: 1