读取一行中包含字符<的文本会在该位置截断字符串,但是将'<'更改为'[',则会恢复整个字符串;
$buffer = '(18:07:18.206)(01426)DISPATCH: RX DSCHUTEANSW: status=0x20c001 gp [10 0 0 0 0] l_code_sc=16 code_sc=<SDtGt15JRK_001>';
echo $buffer . '<br>';
$buffer = str_replace('<', '[', $buffer);
echo $buffer . '<br>';
(18:07:18.206)(01426)DISPATCH: RX DSCHUTEANSW: status=0x20c001 gp [10 0 0 0 0] l_code_sc=16 code_sc=
(18:07:18.206)(01426)DISPATCH: RX DSCHUTEANSW: status=0x20c001 gp [10 0 0 0 0] l_code_sc=16 code_sc=[SDtGt15JRK_001>
答案 0 :(得分:1)
在浏览器中查看源代码,它仍然存在。
<被您的浏览器视为打开的HTML标记,因此该字符串不会显示在<。
之后改为使用此:
echo htmlspecialchars($buffer) . '<br>';
答案 1 :(得分:0)
问题不在于PHP解析字符串,而是Web浏览器如何解释该字符串。浏览器会将< >
中的任何字符串视为HTML标记,并且不会直接在屏幕上显示该标记。
为了转义该符号并将其显示在屏幕上,可以在PHP中使用htmlentities
函数。 (Ref)
您可以按以下方式使用它:
$buffer = '(18:07:18.206)(01426)DISPATCH: RX DSCHUTEANSW: status=0x20c001 gp [10 0 0 0 0] l_code_sc=16 code_sc=<SDtGt15JRK_001>';
echo htmlentities($buffer) . '<br>';
答案 2 :(得分:0)
之所以会发生这种情况,是因为浏览器将文本<SDtGt15JRK_001>
解释为html标签,并且不显示它,即使将其转换为字符串,行为也相同。
如果您希望在浏览器中也显示此文本,则需要使用htmlspecialchars
来显示标记,如下所示:-
$buffer = "(18:07:18.206)(01426)DISPATCH: RX DSCHUTEANSW: status=0x20c001 gp [10 0 0 0 0] l_code_sc=16 code_sc=<SDtGt15JRK_001>";
echo htmlspecialchars($buffer) . '<br>'; //use htmlspecialchars
输出:-
(18:07:18.206)(01426)DISPATCH: RX DSCHUTEANSW: status=0x20c001 gp [10 0 0 0 0] l_code_sc=16 code_sc=<SDtGt15JRK_001>