我有以下字符串:遞歸更換匹配標籤的正則表達式
<?foo?> <?bar?> <?baz?> hello world <?/?> <?/?> <?/?>
我需要一個正則表達式將其轉換成
<?foo?> <?bar?> <?baz?> hello world <?/baz?> <?/bar?> <?/foo?>
下面的代碼適用於非 - 遞歸標籤:
$x=preg_replace_callback('/.*?<\?\/\?>/',function($x){
return preg_replace('/(.*<\?([^\/][\w]+)\?>)(.*?)(<\?\/?\?>)/s',
'\1\3<?/\2?>',$x[0]);
},$str);
我的眼睛......他們正在流血...... – 2011-05-13 01:31:57
我已決定放棄/?>結束標記並始終要求用戶命名結束標記。這會讓我更容易解析它們,速度也更快,因爲我不需要依靠手動進行解析。 – romaninsh 2011-05-20 09:42:25