2012-05-17 41 views
2

出于测试目的,我需要的字符串,如:PHP - 如何使用控制字符或二进制数据生成字符串?

"test\x00string" 

我想遍历所有的控制字符(00-1F),并自动生成字符串,这样我就不必杂波我的代码有31行像这样,但不知道如何在PHP中实现。

也用于测试格式错误的utf我可能想要插入其他字节序列到字符串。

+0

你试过'chr()'? http://www.php.net/manual/en/function.chr.php – Brad

+0

@杰克我试图寻找“PHP生成控制字符的字符串”和类似的东西。 – nus

+0

@Jack我也看看字符串的PHP文档 – nus

回答

2

对于某些字符有predefined escape sequences,可以在双引号中:

$nullByte = "\0"; 

但是,如果你要循环,最好的办法是chr()

$string = ''; 

foreach (range(0x00, 0x1F) as $i) 
{ 
    $string .= chr($i); 
} 

而且作为一行:

$string = implode('', array_map('chr', range(0x00, 0x1F))); 
+0

转义链接序列不正确,因为http://php.net/manual/en/regexp.reference.escape.php专门针对正则表达式,而不适用于一般字符串。我正在编辑这个答案来纠正它。 – spikyjt

1
$nullByte = chr(0); 

您可以只连接字节来创建一个多字节字符串。