php preg_split 将字符串从方括号拆分为数组
php preg_split split string to array from square brackets
我想从方括号中拆分字符串而不删除任何字符。我尝试了以下代码,但它对我不起作用。
$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+ 次左括号,然后是左括号或右括号,给您一个 [
或 n ]
为了保留分隔符,您可以在从 [
到 ]
的匹配组中捕获分隔符,并使用匹配而不是右括号的否定字符 class 来匹配它们之间的内容。
使用 PREG_SPLIT_DELIM_CAPTURE
标志保留分隔符。
请注意,您不需要 /U
标志。
(\[[^]]+\])
说明
(
捕获组
\[
匹配 [
[^]]+
匹配 1+ 次不是 ]
\]
匹配 ]
)
关闭群组
例如:
$value = "<p> Lorem ipsum dolor [State] sit amet, consectetur [City] adipisicing [TopJob7] elit, sed do eiusmod [JobType]</p>";
$tagsReplace = preg_split('/(\[[^]]+\])/', $value, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r( $tagsReplace );
我想从方括号中拆分字符串而不删除任何字符。我尝试了以下代码,但它对我不起作用。
$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+ 次左括号,然后是左括号或右括号,给您一个 [
或 n ]
为了保留分隔符,您可以在从 [
到 ]
的匹配组中捕获分隔符,并使用匹配而不是右括号的否定字符 class 来匹配它们之间的内容。
使用 PREG_SPLIT_DELIM_CAPTURE
标志保留分隔符。
请注意,您不需要 /U
标志。
(\[[^]]+\])
说明
(
捕获组\[
匹配[
[^]]+
匹配 1+ 次不是]
\]
匹配]
)
关闭群组
例如:
$value = "<p> Lorem ipsum dolor [State] sit amet, consectetur [City] adipisicing [TopJob7] elit, sed do eiusmod [JobType]</p>";
$tagsReplace = preg_split('/(\[[^]]+\])/', $value, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r( $tagsReplace );