PHP:如何从字符串中删除特定索引?

14
我希望能够指定字符串中的索引并将其删除。
我有以下内容:
"Hello World!!"

我想要删除第四个索引位置(即“Hello”中的 o)。最终结果如下:
"Hell World!!"

我尝试过使用unset(),但没有效果。我在谷歌上搜索了如何做到这一点,但每个人都说要用unset(),但对我来说没有起作用。也许我没有正确使用它,我不知道。

3
使用 substr 函数,获取字符串的前几个字符和从指定位置开始到结尾的后几个字符,然后将它们拼接起来。 - mario
我尝试了unset(),但它没有起作用。我已经在谷歌上搜过这个问题,也看到很多人都建议用这个方法,但对于我来说并没有起作用。 - Rob Avery IV
将str_split拆分成数组,移除索引然后再用implode重新组合为字符串。 - Iron3eagle
在PHP中,字符串不被视为数组,它们有自己的一套操作。 - Ja͢ck
5个回答

24
这是一个通用的解决方法:
$str = "Hello world";
$i = 4;
echo substr_replace($str, '', $i, 1);

基本上,用紧邻的字符串替换从索引开始的字符串部分。
另请参阅:substr_replace() 或者,简单地说:
substr($str, 0, $i) . substr($str, $i + 1)

11
$str="Hello World";
$str1 = substr($str,0,4);
$str2 = substr($str,5,7);
echo $str1.$str2;

1
我可能会将字符串放入数组中,然后只删除第4个键。 - Kermit
2
@AarolamaBluenk 在 PHP 中,字符串不等同于数组 :) - Ja͢ck
在第三行:substr 的整数参数 7 并不是必需的,它并不影响其正常工作。 - Omar Tariq

2

我曾经对处理字符串的PHP特定方法感到困扰。当然,自然的解决方案是使用字符串函数或使用数组,但在我看来,这比直接使用字符串索引更慢。以下代码片段的问题在于,在内存中,字符串只被替换为空白字符,如果您需要进行比较或其他操作,则这不是一个好选择。也许在将来的版本中,我们会得到直接删除字符串索引的内置函数,谁知道呢。

$string = 'abcdefg';
$string[3] = '';
var_dump($string);
echo $string;

0
$myVar = "Hello World!!";

$myArray = str_split($myVar);
array_splice($myArray, 4, 1);

$myVar = implode("", $myArray);

个人喜欢处理数组。

(抱歉,由于使用手机发布,缺少代码括号)


使用数组既不短小精悍,也不高效;此外,字符串函数也不难,对吧? :) - Ja͢ck

0

我认为可以创建一个函数并像这样调用它

    function rem_inx ($str, $ind)
    { 
       return substr($str,0,$ind++). substr($str,$ind);
    }

    //use
    echo rem_inx ("Hello World!!", 4);     

返回 substr($str,0,$ind--). substr($str,$ind); 可以修复上述问题。 - Ste

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接