首页 > 解决方案 > 如何从php字符串中提取某些单词?

问题描述

我有一个长这样的字符串I1:1;I2:2;I8:2;NA1:5;IA1:[1,2,3,4,5];S1:asadada;SA1:[1,2,3,4,5];SA1:[1,2,3,4,5];。现在我只想得到某些单词,例如'I1','I2','I8','NA1'等等,即':'&';'之间的单词 只有,并将它们存储在数组中。如何有效地做到这一点?

我已经尝试过使用preg_split()它并且它可以工作但给了我错误的输出。如下所示。

// $a is the string I want to extract words from
$str = preg_split("/[;:]/", $a);
print_r($str);

我得到的输出是这个

Array
(
    [0] => I8
    [1] => 2
    [2] => I1
    [3] => 1
    [4] => I2
    [5] => 2
    [6] => I3
    [7] => 2
    [8] => I4
    [9] => 4
    [10] => 
)
Array
(
    [0] => NA1
    [1] => 5
    [2] => 
)
Array
(
    [0] => IA1
    [1] => [1,2,3,4,5]
    [2] => 
)
Array
(
    [0] => S1
    [1] => asadada
    [2] => 
)
Array
(
    [0] => SA1
    [1] => [1,2,3,4,5]
    [2] => 
)

但我期待'I8','I1','I2','I3','I4'也在位置[0]的单独数组中。有关如何执行此操作的任何帮助。

标签: phpstring

解决方案


你可以试试类似的东西。

<?php

$str = 'I1:1;I2:2;I8:2;NA1:5;IA1:[1,2,3,4,5];S1:asadada;SA1:[1,2,3,4,5];SA1:[1,2,3,4,5];';

preg_match_all('/(?:^|[;:])(\w+)/', $str, $result);

print_r($result[1]);  // Matches are here in $result[1]

推荐阅读