我想从方括号中拆分字符串而不删除任何字符。我尝试了以下代码,但对我而言不起作用。
$value = "<p> Lorem ipsum dolor [State] sit amet, consectetur [City] adipisicing [TopJob7] elit, sed do eiusmod [JobType]</p>";
$tagsReplace = preg_split('/[\[]*[\][]/U', $value, -1);
echo '<pre>';
print_r( $tagsReplace );
exit;
当我运行上面的代码时,我得到了类似的输出
Array
(
[0] => <p> Lorem ipsum dolor
[1] => State
[2] => sit amet, consectetur
[3] => City
[4] => adipisicing
[5] => TopJob7
[6] => elit, sed do eiusmod
[7] => JobType
[8] => </p>
)
我想要如下输出。
Array
(
[0] => <p> Lorem ipsum dolor
[1] => [State]
[2] => sit amet, consectetur
[3] => [City]
[4] => adipisicing
[5] => [TopJob7]
[6] => elit, sed do eiusmod
[7] => [JobType]
[8] => </p>
)
请在错误的地方帮助我。
答案 0 :(得分:3)
您的模式[{101, 2}, {202, 4}]
与0+匹配一个左括号,然后一个左括号或右括号给您[\[]*[\][]
或n [
要保留定界符,您可以捕获从]
到[
的组,并使用否定的字符类匹配而不是右括号匹配两者之间的内容。
使用]
标志保留定界符。
请注意,您不需要PREG_SPLIT_DELIM_CAPTURE
标志。
/U
说明
(\[[^]]+\])
捕获组
(
匹配\[
[
匹配1次以上而不是[^]]+
]
匹配\]
]
关闭群组例如:
)