我有一个简单的字符串,值为this。
它的价值来自于生物特征提取器
$name = "~DeviceName=TX628\x00";
我使用此代码来消除多余的字符:
$x = trim($name, '~DeviceName=');
$deviceName = trim($x, '\x00');
但它只删除~devicename=
$deviceName="TX628\x00"
当i var_转储时,它有一个6字符串值,但应该是5字符串值。
string(6) "TX628"
谢谢你的回答。下面的代码适用于我的问题。
$name = "~DeviceName=TX628\x00";
$x = trim($name, '~DeviceName=');
$deviceName = preg_replace('/[\x00-\x1F\x7F-\xFF]/', '', $x);
//$deviceName = TX628;
最佳答案
代码不起作用的原因是\x00
函数的trim
参数是单引号,而不是双引号,即
$name = "~DeviceName=TX628\x00";
$x = trim($name, '~DeviceName=');
$deviceName = trim($x, "\x00");
请注意,
trim
不应该用于删除字符串,只用于选定的字节。如果设备名为“cc>”,结果将只是DX628
,因为第一个X628
也会删除初始的trim
字节。要安全地从另一个字符串的开头删除字符串,应该使用例如
D
。