如何 preg_split 所有字符,但不拆分 <b> 和 <br>
How to preg_split all character, but don't split <b> and <br>
这里有很多关于 [preg_split] 的问题,但是 none 与我的问题有关。我正在使用以下代码将字符串拆分为 PHP 中的字符,如下所示:
$str = "My <b>table</b> in brown <br> Help";
$char = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($char);
输出为:
Array
(
[0] => M
[1] => y
[2] =>
[3] => <
[4] => b
[5] => >
[6] => t
[7] => a
[8] => b
[9] => l
[10] => e
[11] => <
[12] => /
[13] => b
[14] => >
[15] =>
[16] => i
[17] => n
[18] =>
[19] => b
[20] => r
[21] => o
[22] => w
[23] => n
[24] =>
[25] => <
[26] => b
[27] => r
[28] => >
[29] => ...
)
但我期望如下:
Array
(
[0] => M
[1] => y
[2] =>
[3] => <b>
[6] => t
[7] => a
[8] => b
[9] => l
[10] => e
[11] => </b>
[15] =>
[16] => i
[17] => n
[18] =>
[19] => b
[20] => r
[21] => o
[22] => w
[23] => n
[24] =>
[25] => <br>
[29] => ...
)
字符如:<b>,</b>,<br>,<i>,</i>
等不应拆分。
谢谢。
您可以通过拆分 <
和 >
中的单个字符或一系列字符来实现此目的,使用 PREG_SPLIT_DELIM_CAPTURE
选项捕获每个值:
$str = "My <b>table</b> in brown <br> Help";
$char = preg_split('#(</?[a-z]+>|[a-z ])#ui', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
print_r($char);
输出:
Array (
[0] => M
[1] => y
[2] =>
[3] => <b>
[4] => t
[5] => a
[6] => b
[7] => l
[8] => e
[9] => </b>
[10] =>
[11] => i
[12] => n
[13] =>
[14] => b
[15] => r
[16] => o
[17] => w
[18] => n
[19] =>
[20] => <br>
[21] =>
[22] => H
[23] => e
[24] => l
[25] => p
)
这里有很多关于 [preg_split] 的问题,但是 none 与我的问题有关。我正在使用以下代码将字符串拆分为 PHP 中的字符,如下所示:
$str = "My <b>table</b> in brown <br> Help";
$char = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($char);
输出为:
Array
(
[0] => M
[1] => y
[2] =>
[3] => <
[4] => b
[5] => >
[6] => t
[7] => a
[8] => b
[9] => l
[10] => e
[11] => <
[12] => /
[13] => b
[14] => >
[15] =>
[16] => i
[17] => n
[18] =>
[19] => b
[20] => r
[21] => o
[22] => w
[23] => n
[24] =>
[25] => <
[26] => b
[27] => r
[28] => >
[29] => ...
)
但我期望如下:
Array
(
[0] => M
[1] => y
[2] =>
[3] => <b>
[6] => t
[7] => a
[8] => b
[9] => l
[10] => e
[11] => </b>
[15] =>
[16] => i
[17] => n
[18] =>
[19] => b
[20] => r
[21] => o
[22] => w
[23] => n
[24] =>
[25] => <br>
[29] => ...
)
字符如:<b>,</b>,<br>,<i>,</i>
等不应拆分。
谢谢。
您可以通过拆分 <
和 >
中的单个字符或一系列字符来实现此目的,使用 PREG_SPLIT_DELIM_CAPTURE
选项捕获每个值:
$str = "My <b>table</b> in brown <br> Help";
$char = preg_split('#(</?[a-z]+>|[a-z ])#ui', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
print_r($char);
输出:
Array (
[0] => M
[1] => y
[2] =>
[3] => <b>
[4] => t
[5] => a
[6] => b
[7] => l
[8] => e
[9] => </b>
[10] =>
[11] => i
[12] => n
[13] =>
[14] => b
[15] => r
[16] => o
[17] => w
[18] => n
[19] =>
[20] => <br>
[21] =>
[22] => H
[23] => e
[24] => l
[25] => p
)