如果字符串太长,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

(如预期)