假设您有一个如下所示的字符串:
token1 token2 tok3
并且您想获取所有标记(特别是空格之间的字符串),以及它们的位置(偏移量)和长度。
所以我想要一个看起来像这样的结果:
array(
array(
'value'=>'token1'
'offset'=>0
'length'=>6
),
array(
'value'=>'token2'
'offset'=>7
'length'=>6
),
array(
'value'=>'tok3'
'offset'=>14
'length'=>4
),
)
我知道这可以通过简单地循环遍历字符串的字符来完成,我可以简单地编写一个函数来完成此操作。
我想知道,PHP 是否有任何内置功能可以有效地执行此操作或至少可以帮助完成其中的一部分?
我正在寻找建议并感谢所提供的任何帮助。谢谢
最佳答案
您可以使用 preg_match_all
使用 PREG_OFFSET_CAPTURE 标志:
$str = 'token1 token2 tok3';
preg_match_all('/\S+/', $str, $matches, PREG_OFFSET_CAPTURE);
var_dump($matches);
然后你只需要像这样替换 $matches[0]
中的项目:
function update($match) {
return array( 'value' => $value[0], 'offset' => $value[1], 'length' => strlen($value[0]));
}
array_map('update', $matches[0]);
var_dump($matches[0]);
关于来自字符串的 PHP token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187821/