我如何重新索引字符串


How can I reindex a string?

它基本上归结为这个。我有一个名为$name的字符串。$name通常具有值" blablabla ",该值来自外部资源,因此它被封装在两个单引号中。如果我自己声明这个变量,它看起来像这样:$name = "''blablabla''";

我正在删除这些单引号:

$name[0] = '';
$name[1] = '';
$name[mb_strlen($name, 'UTF-8')-1] = '';
$name[mb_strlen($name, 'UTF-8')-2] = ''; 

(用索引取消字符串设置无效)所以现在我有一个$name,它的值是"blablabla",没有单引号。这是我的问题。当我查看源代码时,在"blablabla"之前有一些奇怪的字符。我该怎么处理呢?还有,是否有任何方法来重新索引我的字符串(例如array_values为数组做什么)?

编辑最后我使用了下面的代码:

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

.

$name = "''foo''";
$name[0] = '';
$name[1] = '';
$len = strlen($name); # binary safe string length
$name[$len-1] = '';
$name[$len-2] = '';
echo $name; # foo

mb_strlenstrlen的比较

$utf8 = 'ä';
mb_strlen($utf8, 'UTF-8'); # 1
strlen($utf8);             # 2
$utf8[1] != 'ä';

您可以使用Trim函数:

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