2009-09-06 6 views

Répondre

0

Pour avoir \ 'intérieur « » vous devez doubler comme si:

$patterns[] = '/<rege>!\\^\\.\\*\\$!(.*)!<\\/rege>/'; 

Je pense aussi que vous voulez que ce match soit ungreedy parce que vous vouloir capturer correctement email même si des constructions similaires se produisent dans le texte de recherche plusieurs fois ainsi:

$patterns[] = '/<rege>!\\^\\.\\*\\$!(.*?)!<\\/rege>/'; 
+0

??? Ce n'est pas vrai et si c'était le cas, ce serait pour les guillemets doubles, pas pour les guillemets simples utilisés par Steve. – p4bl0

+0

hm .. vous avez raison, il semble que doubler backslash pour obtenir antislash littérale est seulement nécessaire avant guillemet simple ou à la fin de la chaîne. Mais l'utilisation de double barre oblique inversée ailleurs donne également un seul antislash et est plus cohérent. –

+0

J'ai essayé le second et ça a très bien fonctionné! Merci Kamil !! – Steve

0

Essayez avec ceci:

$patterns[] = '/<rege>!\^\.\*\$!([^<]*)!<\/rege>/'; 
0

Vous n pour éviter les barres obliques inverses:

<?php 

$sample = "<rege>!^.*$!mailto:[email protected]!</rege>"; 
preg_match("/<rege>!\\^\\.\\*\\$!(.*)!<\/rege>/",$sample,$matches); 

print_r($matches); 
?>