<?php
$string = 'Q1
Question text 1?
1. Answer A
2. Answer B (+1p)
3. Answer C
4. Answer D (+1p)
Q2
Question Text 2?
1. Answer A (+1p)
2. Answer B
3. Answer C (+1p)
4. Answer D
Q3
Question Text 3?
1. Answer A
2. Answer B
3. Answer C (+1p)
Q4
Question Text 4
1. Answer A (+1p)
2. Answer B (+1p)
3. Answer C (+1p)
' ;
$regex_questions = '~(?ms)(?:^$\R)(?P<answers>(?:^\d\. Answer [A-E].*?\R)+?)(?:^$\R)(?-ms)~' ;
preg_match_all ( $regex_questions , $string , $questions , PREG_OFFSET_CAPTURE
) ;
$regex_answers = '~(?m)^(?:\d\. Answer (?<choice>[A-E]).*?\(\+1p\))$~' ;
$offset = 0 ;
foreach ( $questions [ "answers" ] as $question ) {
$answer = "Answer: " . implode ( ',' , $answers [ "choice" ] ) . "\n " ; $position = $offset + $question [ 1 ] + strlen ( $question [ 0 ] ) ; }
echo $string ;
?>
PD9waHAKCiRzdHJpbmcgPSAnUTEKClF1ZXN0aW9uIHRleHQgMT8KCjEuIEFuc3dlciBBCjIuIEFuc3dlciBCICgrMXApCjMuIEFuc3dlciBDCjQuIEFuc3dlciBEICgrMXApCgpRMgoKUXVlc3Rpb24gVGV4dCAyPwoKMS4gQW5zd2VyIEEgKCsxcCkKMi4gQW5zd2VyIEIKMy4gQW5zd2VyIEMgKCsxcCkKNC4gQW5zd2VyIEQgCgpRMwoKUXVlc3Rpb24gVGV4dCAzPwoKMS4gQW5zd2VyIEEKMi4gQW5zd2VyIEIKMy4gQW5zd2VyIEMgKCsxcCkKClE0CgpRdWVzdGlvbiBUZXh0IDQKCjEuIEFuc3dlciBBICgrMXApCjIuIEFuc3dlciBCICgrMXApCjMuIEFuc3dlciBDICgrMXApCgonOwoKJHJlZ2V4X3F1ZXN0aW9ucyA9ICd+KD9tcykoPzpeJFxSKSg/UDxhbnN3ZXJzPig/Ol5cZFwuIEFuc3dlciBbQS1FXS4qP1xSKSs/KSg/Ol4kXFIpKD8tbXMpfic7CnByZWdfbWF0Y2hfYWxsKCRyZWdleF9xdWVzdGlvbnMsICRzdHJpbmcsICRxdWVzdGlvbnMsIFBSRUdfT0ZGU0VUX0NBUFRVUkUpOwoKJHJlZ2V4X2Fuc3dlcnMgPSAnfig/bSleKD86XGRcLiBBbnN3ZXIgKD88Y2hvaWNlPltBLUVdKS4qP1woXCsxcFwpKSR+JzsKJG9mZnNldCA9IDA7Cgpmb3JlYWNoICgkcXVlc3Rpb25zWyJhbnN3ZXJzIl0gYXMgJHF1ZXN0aW9uKSB7CglwcmVnX21hdGNoX2FsbCgkcmVnZXhfYW5zd2VycywgJHF1ZXN0aW9uWzBdLCAkYW5zd2Vycyk7CgkkYW5zd2VyID0gIkFuc3dlcjogIiAuIGltcGxvZGUoJywnLCAkYW5zd2Vyc1siY2hvaWNlIl0pIC4iXG4iOwoJJHBvc2l0aW9uID0gJG9mZnNldCArICRxdWVzdGlvblsxXSArIHN0cmxlbigkcXVlc3Rpb25bMF0pOwoJJHN0cmluZyA9IHN1YnN0cl9yZXBsYWNlKCRzdHJpbmcsICRhbnN3ZXIsICRwb3NpdGlvbiwgMCk7Cgkkb2Zmc2V0ICs9IHN0cmxlbigkYW5zd2VyKTsKfQplY2hvICRzdHJpbmc7Cj8+