我试图从一个函数中获得一个数字,该函数只回显文本,而不是将其返回给变量,如下所示:
ob_start();
function_to_get_id_number();
$thisIDnumber = ob_get_clean();
如果我回显$thisIDnumber
变量,所需的数字将打印在HTML输出中。
但是,运行var_dump($thisIDnumber)
输出如下:string(18)"7"(假设数字是7,尽管var_dump()报告一个18个字符的字符串,而不管数字是多少。)
任何将字符串转换为整数的尝试(例如(int)$thisIDnumber
,或int_val($thisIDnumber)
,或$thisIDnumber = 0+$thisIDnumber
失败并且输出为0)
运行mb_detect_encoding($thisIDnumber)
报告字符串为ASCII编码。
我真的不知道如何解决这个问题,但非常感谢任何建议或见解!提前感谢!
如果函数打印大量空白(空格,制表符甚至回车)并且您通过web浏览器检查var_dump()的输出(因此它呈现为HTML和空格被折叠),则可以解释string(18)
部分。然而,转换为number应该忽略常规的前导空格。所以可能还有其他不可打印的字符
试试这个:
ob_start();
function_to_get_id_number();
$thisIDnumber = ob_get_clean();
var_dump($thisIDnumber, bin2hex($thisIDnumber));
十六进制代码应该给你一个字符串内部内容的线索。
更新:
$data = '5b777073635f63617465676f72795f69645d';
for($i=0, $len=strlen($data); $i<$len; $i+=2){
echo chr(hexdec(substr($data, $i, 2)));
}
…打印:
[wpsc_category_id]
: - ?
你没有提供太多的信息,所以这是在黑暗中拍摄。
你为什么不试试这个:如果根据定义id是数字,则通过使用正则表达式删除其他所有内容来强制执行。
(正如jprofit在他对你的问题的评论中所写:更多关于function_to_get_id_number()
的信息会很好。)为什么首先需要缓冲输出?function_to_...
不能返回一个正确的值,而不是输出一个字符串?)