Preg_replace 如果字符串太长则不起作用?

Preg_replace not works if the string is too long?

我有以下长字符串:

$long_text = "aaaaaaaaaaaaaaaaaaaaaaaa[BS][BS][BS][BS][BS][BS][BS][BS]aaaaaaaaaaaaaaaaaaaaaaaa[BS][BS][BS][BS][BS][BS][BS][BS]aaaaaaaaaaaaaaaaaaaaaaaa[BS][BS][BS][BS][BS][BS][BS][BS]aaaaaaaaaaaaaaaaaaaaaaaa[BS][BS][BS][BS][BS][BS][BS][BS]";

我想使用 [BS] 作为退格键。所以我有以下代码:

$long_text = preg_replace('/.(?R)*\[BS\]/', '', $long_text);

但是因为字符串太长,所以不起作用。

有人可以帮助我并告诉我为什么 PHP 不能处理这么长的文本吗?有办法处理吗? (它适用于较短的文本)

不是您问题的答案,但可能是您的问题....

<?php
$s = "aaaaaaaaXbbbbbbbb[BS][BS][BS][BS][BS][BS][BS][BS]aaaaaaaaXbbbbbbbb[BS][BS][BS][BS][BS][BS][BS][BS]aaaaaaaaXbbbbbbbb[BS][BS][BS][BS][BS][BS][BS][BS]aaaaaaaaXbbbbbbbb[BS][BS][BS][BS][BS][BS][BS][BS]aaaaaaaa";

while ( false!==($pos=strpos($s, '[BS]')) ) {
    $s = substr_replace($s, '', $pos-1, 5);
}

echo $s;

打印

aaaaaaaaXaaaaaaaaXaaaaaaaaXaaaaaaaaXaaaaaaaa

(如预期)