<?php
function do_replace( $string ) {
$regex = '/^(\((?:<([a-z])>)?(\d{0,3}|[a-z]{1,3})(?:<\/\2>)?(\.)?\)|\[(?:<([a-z])>)?(\d{0,3}|[a-z]{1,3})(?:<\/\2>)?(\.)?\])\s*(.*)/i' ;
if ( $result ) {
} else {
$regex = '/^(\d{0,3}|[a-z]{1,3})\.\s*(.+)$/i' ;
if ( $result ) {
} else {
return $string ;
}
}
}
'(1)blahblah' ,
'(<i>iv</i>.) blahblah' ,
'[b] some stuff' ,
'25. blahblah' ,
'A. some other stuff. one' ,
'blah. some other stuff' ,
'text (1) text' ,
'2008. blah' ,
'[123) <-- mismatch'
) ;
foreach ( $strings as $string ) echo do_replace( $string ) . PHP_EOL;
?>
PD9waHAKZnVuY3Rpb24gZG9fcmVwbGFjZSgkc3RyaW5nKSB7CiAgICAkcmVnZXggPSAnL14oXCgoPzo8KFthLXpdKT4pPyhcZHswLDN9fFthLXpdezEsM30pKD86PFwvXDI+KT8oXC4pP1wpfFxbKD86PChbYS16XSk+KT8oXGR7MCwzfXxbYS16XXsxLDN9KSg/OjxcL1wyPik/KFwuKT9cXSlccyooLiopL2knOwogICAgJHJlc3VsdCA9IHByZWdfbWF0Y2goJHJlZ2V4LCAkc3RyaW5nKTsKCWlmKCRyZXN1bHQpIHsKCQlyZXR1cm4gcHJlZ19yZXBsYWNlKCRyZWdleCwgJyUlJDF8JDgnLCAkc3RyaW5nKTsKCX0gZWxzZSB7CgkJJHJlZ2V4ID0gJy9eKFxkezAsM318W2Etel17MSwzfSlcLlxzKiguKykkL2knOwoJCSRyZXN1bHQgPSBwcmVnX21hdGNoKCRyZWdleCwgJHN0cmluZyk7CgkJaWYoJHJlc3VsdCkgewoJCQlyZXR1cm4gcHJlZ19yZXBsYWNlKCRyZWdleCwgJyUlJDEufCQyJywgJHN0cmluZyk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICRzdHJpbmc7CgkJfQoJfQp9CiRzdHJpbmdzID0gYXJyYXkoCgknKDEpYmxhaGJsYWgnLAoJJyg8aT5pdjwvaT4uKSBibGFoYmxhaCcsCgknW2JdICZuYnNwO3NvbWUgc3R1ZmYnLAoJJzI1LiBibGFoYmxhaCcsCgknQS4gc29tZSBvdGhlciBzdHVmZi4gb25lJywKCSdibGFoLiBzb21lIG90aGVyIHN0dWZmJywKCSd0ZXh0ICgxKSB0ZXh0JywKCScyMDA4LiBibGFoJywKCSdbMTIzKSA8LS0gbWlzbWF0Y2gnCik7CmZvcmVhY2goJHN0cmluZ3MgYXMgJHN0cmluZykgZWNobyBkb19yZXBsYWNlKCRzdHJpbmcpIC4gUEhQX0VPTDsKPz4=