将命名空间对象转换为数组时,我遇到了意想不到的结果。
<?php
namespace package\test;
class Test {
private $foo;
private $bar;
}
$test = new Test();
$testArray = (array) $test;
var_dump($testArray);
,输出
array
'�package\test\Test�foo' => null
'�package\test\Test�bar' => null
不确定�
中的var_dump
字符是什么?我查看了源代码,它似乎是�
。基本上我需要做的是修剪键,使其最终成为
array
'foo' => null
'bar' => null
但是我不确定如何使用正则表达式来定位那些�
个字符以摆脱我不想要的部分?这适用于PHP 5.3.3。感谢。
答案 0 :(得分:0)
您实际上不需要任何正则表达式。您可以执行以下操作:
foreach ($testArray as $key => $value) {
$pos = strrpos($key, chr(0)); // find the last null character
if ($pos !== false) {
$testArray[substr($key, $pos+1)] = $value;
unset($testArray[$key]);
}
}
浏览器会将每个无法显示的字符替换为黑色菱形(U + FFFD REPLACEMENT CHARACTER)。因此,在这种情况下,检查这个特定的替代字符甚至没有意义。