Php 如何为字符串重新编制索引?

Php 如何为字符串重新编制索引?,php,arrays,string,indexing,Php,Arrays,String,Indexing,基本上可以归结为这一点。我有一个名为$name的字符串$name通常具有值blabla,该值来自外部资源,因此它被封装在两个单引号中。如果我自己声明这个变量,它将如下所示: $name=blabla 我通过以下方式删除这些单引号: $name[0] = ''; $name[1] = ''; $name[mb_strlen($name, 'UTF-8')-1] = ''; $name[mb_strlen($name, 'UTF-8')-2] = ''; 用索引取消设置字符串不起作用 现在我有了

基本上可以归结为这一点。我有一个名为$name的字符串$name通常具有值blabla,该值来自外部资源,因此它被封装在两个单引号中。如果我自己声明这个变量,它将如下所示: $name=blabla

我通过以下方式删除这些单引号:

$name[0] = '';
$name[1] = '';
$name[mb_strlen($name, 'UTF-8')-1] = '';
$name[mb_strlen($name, 'UTF-8')-2] = ''; 
用索引取消设置字符串不起作用 现在我有了$name,它的值为blabla,没有单引号。 这是我的问题。 当我看源代码时,在blabla之前有一些奇怪的字符。 我该怎么处理? 还有,是否有任何方法可以重新索引我的字符串,例如数组_值对数组的作用

编辑 最终我使用了以下代码:

$name = mb_substr($name, 2, -2, 'UTF-8');
您正在处理编码,而所讨论的字符是单字节的。PHP中的字符串仍然是二进制的,这意味着,您可以在末尾将其截断。 当您使用索引取消设置时,请记住它是二进制位置。mb_strlen不适合收集二进制索引位置,strlen:

mb_strlen与strlen的比较
您可以使用微调功能:

$name = trim($name, "'");
echo $name; // Prints: blablabla

你所说的字符是单字节是什么意思?我说这些价值来自外部资源。所以它可以是多字节的。这就是为什么我使用PHP的mb函数。顺便说一句,thnx对于你的回答,我不想粗鲁,但我只是说为什么我使用mb函数。不,支持多字节字符集没关系。如果您编写的字符串是UTF-8,则“是一个单字节”。所以你可以用具体的字节偏移量来保存它们,但是你需要用strlen收集字节偏移量,因为在这种情况下只有strlen会返回正确的值。你是说mb_strlen不起作用?我不明白为什么。我在下面添加了一个比较。请查看mb_strlen的工作原理和不工作原理。hakre,您应该使用$utf8[0],这看起来很奇怪
$name = "''foo''";

$name[0] = '';
$name[1] = '';

$len = strlen($name); # binary safe string length

$name[$len-1] = '';
$name[$len-2] = '';

echo $name; # foo
$utf8 = 'ä';
mb_strlen($utf8, 'UTF-8'); # 1
strlen($utf8);             # 2

$utf8[1] != 'ä';
$name = trim($name, "'");
echo $name; // Prints: blablabla