Preg_replace_callback không hoạt động

Mình có đoạn php

<?php
$texst = "[url=https://vi.wikipedia.org/wiki/BBCode]BBCode[/url]
[table]
[tr]
[td][b]Dạng[/b][/td]
[td][b]Ví dụ động từ \"to write\"[/b][/td]
[/tr]


[tr]
[td]Đơn giản[/td]
[td]write[/td]
[/tr]
[tr]
[td]Thêm s/es[/td]
[td]writes[/td]
[/tr]
[tr]
[td]Quá khứ[/td]
[td]wrote[/td]
[/tr]
[tr]
[td]To + nguyên mẫu[/td]
[td]to write[/td]
[/tr]
[tr]
[td]V-ing[/td]
[td]writing[/td]
[/tr]
[tr]
[td]V-ed / V3[/td]
[td]written[/td]
[/tr]

[/table]";

echo preg_replace_callback(
    "~\[table\](\n*?(?:\n*?\[trt\]\n*?(?:\n*?\[tdt\]\n*?(?:[\s\S]+)\n*?\[\/tdt\]\n*?)+\n*?\[\/trt\]\n*?)\n*?)?(\n*?(?:\n*?\[tr\]\n*?(?:\n*?\[td\]\n*?(?:[\s\S]+)\n*?\[\/td\]\n*?)+\n*?\[\/tr\]\n*?)+\n*?)\[\/table\]~s",
    function($m) {
		$find = array('~\[trt\]~s','~\[\/trt\]~s','~\[tdt\]~s','~\[\/tdt\]~s');
		$replace = array('<tr>','</tr>','<td>','</td>');
		$m[1] = preg_replace($find,$replace,$m[1]);
		$find = array('~\[tr\]~s','~\[\/tr\]~s','~\[td\]~s','~\[\/td\]~s');
		$m[2] = preg_replace($find,$replace,$m[2]);
        return '<table class="table"><thead class="thead-light">'.$m[1].'</thead><tbody>'.$m[2].'</tbody></table>';
    },
    $texst);

?>

Nó in ra

[url=https://vi.wikipedia.org/wiki/BBCode]BBCode[/url]
[table]
[tr]
[td][b]Dạng[/b][/td]
[td][b]Ví dụ động từ "to write"[/b][/td]
[/tr]


[tr]
[td]Đơn giản[/td]
[td]write[/td]
[/tr]
[tr]
[td]Thêm s/es[/td]
[td]writes[/td]
[/tr]
[tr]
[td]Quá khứ[/td]
[td]wrote[/td]
[/tr]
[tr]
[td]To + nguyên mẫu[/td]
[td]to write[/td]
[/tr]
[tr]
[td]V-ing[/td]
[td]writing[/td]
[/tr]
[tr]
[td]V-ed / V3[/td]
[td]written[/td]
[/tr]

[/table]

Mình đã test phần regexr rồi và nó hoạt động tốt (mình test ở https://regexr.com/)
Và mình test php trên https://www.jdoodle.com/php-online-editor và trên web mình đều không hoạt động?

Đã tim ra cách giải quyết :smiley:

Thay regex thành:

\[table\]([\n\s]*?(?:[\n\s]*?\[trt\][\n\s]*?(?:[\n\s]*?\[tdt\][\n\s]*?(?:[\s\S]+)[\n\s]*?\[\/tdt\][\n\s]*?)+[\n\s]*?\[\/trt\][\n\s]*?)?[\n\s]*?)([\n\s]?(?:[\n\s]*?\[tr\][\n\s]*?(?:[\n\s]*?\[td\][\n\s]*?(?:[\s\S]+)[\n\s]*?\[\/td\][\n\s]*?)+[\n\s]*?\[\/tr\][\n\s]*?)+[\n\s]*?)\[\/table\]

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?