2010-06-09 4 views
0

Salut je le code suivant, mais je ne suis pas un grand amusement de reg exp car ils sont trop confus:php preg_replace_callback problème

<?php 
$r = '|\\*(.+)\\*|'; 
$w = ''; 
$s = 'hello world *copyMe* here'; 
function callbk($str){ 
    print_r($str); 
    foreach($str as $k=>$v) { 
     echo $v; 
    } 
} 
$t = preg_replace_callback($r,'callbk',$s); 

//output: Array ([0] => *copyMe* [1] => copyMe) *copyMe*copyMe 


?> 

ma question est pourquoi est-il à la fois « * copyme * » et " copyMe "? J'espérais obtenir l'un ou l'autre, pas les deux. toute aide serait appriciée. Parce que vous utilisez une expression de capture ()

Répondre

1

Si vous omettez les parenthèses vous obtiendrez seulement *copyMe*.

+0

nice :) J'ai pensé que les parenthèses groupaient des trucs mais ça a fait l'affaire;) – Val

+1

Aussi juste une note rapide: il est recommandé d'écrire votre Regexp avec '/' comme délimiteurs, pas '|'. –