这是一个适用于任意数量令牌的解决方案:
<?php
$string = 'dc: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/';
$explode = explode(' ', $string);
$lines = array();
for ($i = 0; $i < count($explode); $i += 2) {
$lines[] = $explode[$i] . ' <' . $explode[$i + 1] . '>';
}
$string = implode("\n", $lines);
echo $string;
?>
输出:
dc: <http://purl.org/dc/terms/>
foaf: <http://xmlns.com/foaf/0.1/>
演示
正则表达式解决方案(替换/([^ ]+) ([^ ]+) ?/
为$1 <$2>\n
):
<?php
$string = 'dc: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/';
$string = preg_replace('/([^ ]+) ([^ ]+) ?/', "$1 <$2>\n", $string);
echo $string;
?>
演示
正则表达式尸检:
([^ ]+)
- 一个捕获组匹配任何不是空格的字符一次到无限次
[SPACE]
- 文字空格字符
([^ ]+)
- 一个捕获组匹配任何不是空格的字符一次到无限次
[SPACE]?
- 一个可选的文字空格字符