1

我有一个喜欢的字符串

$input = '%name (%postcode) <%email>';

如何使用该方案检测占位符%NAME以便获得一个数组

$wildcards = array('name', 'postcode', 'email');

到底?

它应该识别任何字符串中遵循通配符方案的任何通配符。所以函数也应该转换

'%address (%name)'

array('address', 'name')

通配符方案不是固定的,因此如果您有更好的解决方案,可以更改这些方案。我摆弄了一下sscanf(),但随着输入字符串的格式变化,我需要更灵活的东西,它不适合我的需要。

4

1 回答 1

3

这将完成这项工作:

$input = '%name (%postcode) <%email>';
preg_match_all('/%(\w+)/', $input, $m);
$wildcards = $m[1];
print_r($wildcards);

输出:

Array
(
    [0] => name
    [1] => postcode
    [2] => email
)
于 2010-12-16T09:47:30.717 回答