我有一个简单的字符串,值为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

10-06 16:01