function _xbbcode_parse_args in Extensible BBCode 6
Same name and namespace in other branches
- 5 xbbcode-misc.php \_xbbcode_parse_args()
1 call to _xbbcode_parse_args()
File
- ./
xbbcode.inc, line 85
Code
function _xbbcode_parse_args($args) {
$args = str_replace(array(
"\\\"",
'\\\'',
), array(
"\"",
'\'',
), $args);
if (!$args) {
return;
}
// return if they don't exist.
if ($args[0] == '=') {
return substr($args, 1);
}
else {
$args = substr($args, 1);
}
// otherwise, remove leading space
$otc = _xbbcode_one_time_code($args);
// generate our non-colliding one-time-code.
// first, if there are quoted strings anywhere, strip quotes and escape spaces inside.
$args = preg_replace('/"([^"]*)"|\'([^\']*)\'/e', 'str_replace(\' \',"[space-' . $otc . ']","$1$2")', $args);
// now we have a simple space-separated text.
$args = split(" +", $args);
foreach ($args as $assignment) {
if (!preg_match('/^([a-z]+)=(.*)$/', $assignment, $match)) {
continue;
}
$parsed[$match[1]] = str_replace("[space-{$otc}]", ' ', $match[2]);
}
return $parsed;
}