在将命名空间对象转换为数组时,我遇到了意外的结果。
<?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的。谢谢。
发布于 2010-12-04 09:46:58
你实际上不需要任何正则表达式。您可以执行以下操作:
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替换字符)替换每个无法显示的字符。因此,在这种情况下,检查这个特定的替代字符甚至没有意义。
https://stackoverflow.com/questions/4351376
复制相似问题