$re = '/(?m)^(?=(?:.*type:([^/\s]+))?)(?=(?:.*sort:([^/\s]+))?).*/m';
$str = 'xbox/type:article/sort:date-desc
nintendo/type:media/sort:comments-asc
nintendo/type:1987/sort:14
pc/sort:views-desc
playstation/type:opinion/
playstation/sort:views-asc
xbox/sort:views-asc/type:article
playstation/type:media/sort:views-asc
xbox
02:52:00 P1D
y1987 m8 d13 02:52:00 P1D';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php