Bunlardan önünde .* ile üç pozitif ileri yönlü iddialarını kullanarak bunu elde edebilirsiniz:
<?php
$re = '/(?=.* message="(.*?)")(?=.* world="(.*?)")(?=.* id="(.*?)")/';
$string = '<response id="1" message="whatever" attribute="none" world="hello" />';
preg_match($re, $string, $matches);
var_dump($matches);
Çıktı:
array(4) {
[0]=>
string(0) ""
[1]=>
string(8) "whatever"
[2]=>
string(5) "hello"
[3]=>
string(1) "1"
}
O 3 parametrelerin herhangi bir eksik varsa tabii, bu model (... de size yardımcı olabilir) başarısız olur. Bunları isteğe bağlı olmasını istiyorsanız, daha fazla olmayan bir yakalama gruba lookahead içini sarmak ve isteğe bağlı (?:....)? (bu örnekte "dünya" parametresi isteğe yapar) yapabilirsiniz
/(?=.* message="(.*?)")(?=(?:.* world="(.*?)")?)(?=.* id="(.*?)")/