php字符串操作-替换和删除字符

php字符串操作-替换和删除字符,php,string,Php,String,试图找出一种在php中执行字符串操作的方法。在下面的示例中,我需要识别[backspace]的所有实例并将它们从字符串中删除,但我还需要删除紧跟在它前面的字符 $string = "this is a sentence with dog[backspace][backspace][backspace]cat in it"; 会变成“这是一个有猫的句子” 我最初的想法是将字符串转换成一个数组,并以某种方式执行操作,因为我不相信有任何方法可以用stru_replace来完成这项操作 $array

试图找出一种在php中执行字符串操作的方法。在下面的示例中,我需要识别[backspace]的所有实例并将它们从字符串中删除,但我还需要删除紧跟在它前面的字符

$string = "this is a sentence with dog[backspace][backspace][backspace]cat in it";
会变成“这是一个有猫的句子”

我最初的想法是将字符串转换成一个数组,并以某种方式执行操作,因为我不相信有任何方法可以用stru_replace来完成这项操作

$array = str_split($string);

foreach($array as $key)
{
   .. lost here
}

好的,总体来说这不是一个好的解决方案,但我发现退格可以在PHP中表示为一个字符

比如

$string = str_replace("[backspace]", chr(8), $string);

这不适用于在webbrowser中输出,它将显示一个奇怪的字符,但适用于在命令提示符中使用PHP。

好的,总体来说这不是一个好的解决方案,但我发现backspace可以在PHP中表示为一个字符

比如

$string = str_replace("[backspace]", chr(8), $string);

这不适用于在webbrowser中输出,它将显示一个奇怪的字符,但适用于在命令提示符中使用PHP。

好的,总体来说这不是一个好的解决方案,但我发现backspace可以在PHP中表示为一个字符

比如

$string = str_replace("[backspace]", chr(8), $string);

这不适用于在webbrowser中输出,它将显示一个奇怪的字符,但适用于在命令提示符中使用PHP。

好的,总体来说这不是一个好的解决方案,但我发现backspace可以在PHP中表示为一个字符

比如

$string = str_replace("[backspace]", chr(8), $string);

这不适用于在webbrowser中输出,它将显示一个奇怪的字符,但适用于在命令提示符中使用PHP。

我认为您可以创建一个循环,直到不再存在任何退格为止,首先删除它以及前面的字符

function perform_backspace ($string = '') {
    $search = '[backspace]';
    $search_length = strlen($search);
    $search_pos = strpos($string, $search);
    while($search_pos !== false) {
        if($search_pos === 0) {
            // this is beginning of string, just delete the search string
            $string = substr_replace($string, '', $search_pos, $search_length);
        } else {
            // delete character before search and the search itself
            $string = substr_replace($string, '', $search_pos - 1, $search_length + 1);
        }
        $search_pos = strpos($string, $search);
    }
    return $string;
}

我认为您可以创建一个循环,直到没有更多的退格出现为止,将它的第一个实例与前面的字符一起删除

function perform_backspace ($string = '') {
    $search = '[backspace]';
    $search_length = strlen($search);
    $search_pos = strpos($string, $search);
    while($search_pos !== false) {
        if($search_pos === 0) {
            // this is beginning of string, just delete the search string
            $string = substr_replace($string, '', $search_pos, $search_length);
        } else {
            // delete character before search and the search itself
            $string = substr_replace($string, '', $search_pos - 1, $search_length + 1);
        }
        $search_pos = strpos($string, $search);
    }
    return $string;
}

我认为您可以创建一个循环,直到没有更多的退格出现为止,将它的第一个实例与前面的字符一起删除

function perform_backspace ($string = '') {
    $search = '[backspace]';
    $search_length = strlen($search);
    $search_pos = strpos($string, $search);
    while($search_pos !== false) {
        if($search_pos === 0) {
            // this is beginning of string, just delete the search string
            $string = substr_replace($string, '', $search_pos, $search_length);
        } else {
            // delete character before search and the search itself
            $string = substr_replace($string, '', $search_pos - 1, $search_length + 1);
        }
        $search_pos = strpos($string, $search);
    }
    return $string;
}

我认为您可以创建一个循环,直到没有更多的退格出现为止,将它的第一个实例与前面的字符一起删除

function perform_backspace ($string = '') {
    $search = '[backspace]';
    $search_length = strlen($search);
    $search_pos = strpos($string, $search);
    while($search_pos !== false) {
        if($search_pos === 0) {
            // this is beginning of string, just delete the search string
            $string = substr_replace($string, '', $search_pos, $search_length);
        } else {
            // delete character before search and the search itself
            $string = substr_replace($string, '', $search_pos - 1, $search_length + 1);
        }
        $search_pos = strpos($string, $search);
    }
    return $string;
}

那么您是说您需要将
[backspace]
视为文字退格操作?因此,因为这里一行中有3个字母,所以它会删除
d-o-g
?您不能在这里使用查找替换解决方案,您必须让它实际作为代码运行,因此当检测到[backspace]时,它会删除它前面的1个字母。更正Mike。。。它会将其视为文字退格。我只是以backspace为例,但我也会将其他内容添加到字符串中。那么您是说需要将
[backspace]
视为文字退格操作?因此,因为这里一行中有3个字母,所以它会删除
d-o-g
?您不能在这里使用查找替换解决方案,您必须让它实际作为代码运行,因此当检测到[backspace]时,它会删除它前面的1个字母。更正Mike。。。它会将其视为文字退格。我只是以backspace为例,但我也会将其他内容添加到字符串中。那么您是说需要将
[backspace]
视为文字退格操作?因此,因为这里一行中有3个字母,所以它会删除
d-o-g
?您不能在这里使用查找替换解决方案,您必须让它实际作为代码运行,因此当检测到[backspace]时,它会删除它前面的1个字母。更正Mike。。。它会将其视为文字退格。我只是以backspace为例,但我也会将其他内容添加到字符串中。那么您是说需要将
[backspace]
视为文字退格操作?因此,因为这里一行中有3个字母,所以它会删除
d-o-g
?您不能在这里使用查找替换解决方案,您必须让它实际作为代码运行,因此当检测到[backspace]时,它会删除它前面的1个字母。更正Mike。。。它会将其视为文字退格。我只是使用backspace作为示例,但其他我也会添加到字符串中。