我怎样才能重新索引字符串?

时间:2011-07-29 09:56:18

标签: php arrays string indexing

它基本上归结为此。我有一个名为$ 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');

2 个答案:

答案 0 :(得分:0)

$name = "''foo''";

$name = substr($name, 2, -2);

echo $name; # foo
  1. 您正在处理编码,而有问题的字符(')是单字节的。 PHP中的字符串仍然只是二进制,这意味着,你可以在最后删除它。
  2. 当您使用索引取消设置时,请记住它是二进制位置。 mb_strlen不适合收集二进制索引位置strlen
  3. $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] != 'ä';
    

答案 1 :(得分:0)

您可以使用修剪功能:

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