php - 如何从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]的单独数组中。有关如何执行此操作的任何帮助。
解决方案
你可以试试类似的东西。
<?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]
推荐阅读
- r - 如何使用 lm() 函数在 r 中找到两个缺失的参数?
- c# - 如何在微服务分布式环境中创建一个简短易读的 UUID
- dart - 如何在 Dart 中对带有德语变音符号的字符串列表进行排序?
- jquery - .css 元素的正确语法被添加到 html 标签的 droppable
- r - 在包 tidyr 的“分离”函数中指定分隔符
- java - 解压和压缩后 MS Word 不读取 docx
- java - 使用jackson解析包含等于java中“final”关键字的变量的JSON问题
- scala - 有没有办法检测代码在 colaboratory 中运行,而不是“经典 jupyter”
- android - 如何用 switch-case 替换字段验证器 if 语句
- r - 维纳过程的离散化模拟