【问题标题】:PHP-REGEX - Multiple Choice TypePHP-REGEX - 多项选择类型
【发布时间】:2015-01-29 00:21:35
【问题描述】:

我有一个这样的字符串:

$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 感到困惑......有人可以就我应该怎么做提供一些建议吗?

【问题讨论】:

  • 您应该改变存储和/或生成数据的方式,将问题和答案混合在一个字符串中只会导致将来出现更多问题。
  • 那么,这样做更好吗? $str = "1. Question" $str_c = "a. 1 b. 2 c. 3 d. 4" 然后做一个 preg_replace?
  • 不,一个数组(或对象),带有一个问题键和一个答案键,其中包含一个带有答案的数组。结构化数据更容易处理。
  • 很抱歉...感谢您教我的努力!我忘记了数组的威力。

标签: php css regex


【解决方案1】:

你可以像这样使用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 加上一个 DOT 时会拆分。

【讨论】:

  • 我应该经常阅读手册并参考相关功能...非常感谢您提供的信息!
  • 我有一个问题...我可以 substr() index[1] 并分隔“a.”、“b.”、“c.”、“d.”吗?还是有其他方法可以做到这一点?
  • 您的意思是要将index[1] 拆分为4 个不同的数组元素?
  • 是的,这可能是我想做的选项之一,因为我想将它插入数据库。
  • 非常感谢您一直努力回答我的问题!
【解决方案2】:

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

AFAIK,您可以使用 PHP tokenizer 解决此问题。 ForEach question (1 ... ?) 你可以重新格式化文本以添加你想要的 div

【讨论】:

  • 谢谢你提到tokenizer,我会查一下,估计很快就会讨论,不妨提前阅读!
猜你喜欢
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 2010-10-08
  • 1970-01-01
相关资源
最近更新 更多