preg_replace voor preg_match

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper DS

Jasper DS

14/03/2013 11:00:45
Quote Anchor link
Hallo,

ik heb een string:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/register/activate/:email/:activation


die ik met preg_replace vul*:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$this->rgx = preg_replace('#:([a-z])+#','(?P<$1>[^/]+)',$path);


dat geeft de volgende output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
string '/register/activate/(?P<l>[^/]+)/(?P<n>[^/]+)' (length=44)


nu wil ik dat hij deze output geeft:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
string '/register/activate/(?P<email>[^/]+)/(?P<activation>[^/]+)' (length=44)


zodat ik hem in een pregmatch kan gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(!preg_match('#'.$this->rgx.'$#', $path, $matches))


en de matches alsvolgende kan ophalen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
echo $matches['email'];
echo $matches['activation'];


*hier loopt het waarschijnlijk mis bij de $1. Ik heb heel de preg_replace docu doorgespit en ik weet niet wat ik daar moet zetten maar ik weet wel dat het zou moeten kunnen wat ik hier tracht te doen.
Gewijzigd op 14/03/2013 11:01:24 door Jasper DS
 
PHP hulp

PHP hulp

03/12/2024 18:29:54
 
Ivo Breeden

Ivo Breeden

15/03/2013 22:35:20
Quote Anchor link
Jasper, je moet de plus (+) een klein stukje verplaatsen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$path
='/register/activate/:email/:activation';
$result=preg_replace('#:([a-z]+)#','(?P<$1>[^/]+)', $path);
echo "$result\n";
?>


Resultaat:
/register/activate/(?P<email>[^/]+)/(?P<activation>[^/]+)
 
Jasper DS

Jasper DS

18/03/2013 15:04:31
Quote Anchor link
Bedankt, werkt perfect!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.