PHP-REGEX - 多项选择类型


PHP-REGEX - Multiple Choice Type

我有一个这样的字符串:

$str = "1. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway 2. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway"

我想做的是有一个这样的输出并将每个问题存储到一个div

1. What is love? 
a. Haddaway b. Haxxaway c. Hassaway d. Hannaway 
2. What is love? 
a. Haddaway b. Haxxaway c. Hassaway d. Hannaway 

截至目前,我为正则表达式创建了这个虚构的代码(仍然是新手,对不起!

$str = "1. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway 2. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway"
$repl = preg_replace('#('d+:.*?)(?='d+:|$) *#', "$1", $str);
echo "<div>$repl</div>";

输出是这样的,它存储在一个div上:

1. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway 2. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway

我对如何区分每个问题以及如何对每个选择进行div感到困惑......任何人都可以就我该怎么办提供一些建议吗?

你可以

像这样使用preg_split

$str = "1. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway 2. What is love? a. Haddaway b. Haxxaway c. Hassaway d. Hannaway";
print_r(preg_split('/(?=[a'd]+'.)/', $str, -1, PREG_SPLIT_NO_EMPTY));
Array
(
    [0] => 1. What is love?
    [1] => a. Haddaway b. Haxxaway c. Hassaway d. Hannaway
    [2] => 2. What is love?
    [3] => a. Haddaway b. Haxxaway c. Hassaway d. Hannaway
)

(?=[a'd]+'.)是一个前瞻,当后跟number or letter a加一个点时会分裂。

假设您的输入始终是连贯的。

AFAIK,您可以使用PHP标记器解决此问题。对于每个问题 (1 ... ?),您可以重新格式化文本以添加所需的div