我有一个长字符串,例如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]的单独数组中。有关如何执行此操作的任何帮助。
答案 0 :(得分:0)
一种可能的方法是结合使用explode()和implode()。结果以字符串形式返回,但是例如,您可以轻松地将其放入数组中。
<?php
$input = "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];.";
$output = array();
$array = explode(";", $input);
foreach($array as $item) {
$output[] = explode(":", $item)[0];
}
echo implode(",", $output);
?>
输出:
I1,I2,I8,NA1,IA1,S1,SA1,SA1,.
答案 1 :(得分:0)
您可以尝试类似的事情。
<div class="container">
<h2>This is heading <span class='heading-border'>this is stylish heading line</span></h2>
</div>
答案 2 :(得分:0)
您可以使用preg_match_all()
进行贪婪匹配以匹配;
和:
之间的项目
<?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('/;(.+?)\:/',$str,$matches);
print_r($matches[1]);
实时演示: https://3v4l.org/eBsod