这是我的字符串:
zzzzzzz-------eh="koko"------eh="zizi"--------eh="mimi"--------xxxxxx
我需要一个reg-expression来提取koko,zizi和mimi
但是eh ='zizi'是可选的: 所以,如果它不存在,如:
zzzzzzz----------eh="koko"-----------------eh="mimi"----------xxxxxx
我应该只得到koko和mimi。
'---'是一些文字。
我试过
preg_match_all('#zzzzzzz(.*eh="([^"]*)"){2,3}.*xxxxxx#Uix', $strg , $out, PREG_SET_ORDER);
但它不起作用。
注意:整个事情就像:
zzzzzzz--...--xxxxxxzzzzzzz--...--xxxxxxzzzzzzz--...--xxxxxxzz...
我需要他们分组
喜欢:
array():{
[0]:array():{
[0]:"zizi",
[1]:"mimi",
[2]:"koko",
},
[1]:array():{
[0]:"zizi",
[1]:"koko",
},
[2]:array():{
[0]:"zizi",
[1]:"fofo",
[2]:"bingo",
},
}
答案 0 :(得分:1)
答案 1 :(得分:0)
这可以通过捕获="
之前的所有字符串来解决,直到找到"
:
$s='zzzzzzz-------eh="koko"------eh="zizi"--------eh="mimi"--------xxxxxx';
if (preg_match_all('~(?<==")[^"]*~', $s, $arr))
print_r($arr);
<强>输出:强>
Array
(
[0] => Array
(
[0] => koko
[1] => zizi
[2] => mimi
)
)
答案 2 :(得分:0)
怎么样:
$str = 'zzzzzzz-------eh="koko"------eh="zizi"--------eh="mimi"--------xxxxxxzzzzzzz----------eh="koko"-----------------eh="mimi"----------xxxxxx';
$arr = preg_split('/(?<=x)(?=z)/', $str);
foreach($arr as $s) {
preg_match_all('/"([^"]+)"/', $s, $out);
$arr_out[] = $out[1];
}
print_r($arr_out);
<强>输出:强>
Array
(
[0] => Array
(
[0] => koko
[1] => zizi
[2] => mimi
)
[1] => Array
(
[0] => koko
[1] => mimi
)
)