PHP regex
 
spicey 20. mar 2008 08:03:50 Pridružen od:
2. avg 2007
70 objav
87 3 3
#1

Pozdravljeni,



naletel sem na problem, ki mi rahlo greni življenje in mislim, da bi ga kdo tukaj brez večjega problema rešil.


// prvi
$ref = preg_match_all( "{\[ref\](.*)\[\/ref\]}i", $txt, $ret );

// drugi
$ref = preg_match_all( "{\[ref\]([^\[\/ref\]]*.*)\[\/ref\]}i", $txt, $ret );

Mene zanima vse med tagoma [ref] in [/ref], kar ni problematično, je pa problem če se pojavita dva v istem subjectu ($txt), ker dobim nazaj vse kar je med zunanjima dvema.



Upam da ima kdo minutko časa in volje za pomoč.

Hvala


všeč(0) ni všeč(0) spam(0)
 
Vini 20. mar 2008 09:03:05 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#2

Preberi si malo o Pattern Modifiers. Zanima te U (PCRE_UNGREEDY).



btw: drugi regular expression nima smisla, tam si dolocil le to, da takoj za [ref] ne sme biti znakov [, /, r, e, f ali ], vendar, ker si uporabil potem *, ki matcha tudi 0 znakov, je ta del povsem brez veze. Je pa tudi brez veze, ker ni to, kar si zelel doseci :)


všeč(0) ni všeč(0) spam(0)
 
twarlock 20. mar 2008 11:03:58 Pridružen od:
17. okt 2006
160 objav
0 0 0
#3
$txt = "[ref]REF1[/ref] Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n";
$txt.= "In nec pede a nulla placerat bibendum. [ref]REF2[/ref] Maecenas nec turpis eu diam pretium aliquam.";
$ref = array();
if(preg_match_all("#\[ref\](.*?)\[\/ref\]#i",$txt,$matches,PREG_SET_ORDER)) {
foreach($matches as $match) {
$ref[] = $match[1];
}
}
var_export($ref);

output:


array ( 0 => 'REF1', 1 => 'REF2', )
všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se