注意到一些字符串(取自m3u播放列表文件中创建的数组)由于格式错误的十六进制字符转义序列而无法正常工作。
var strArray = [
"#EXTM3U",
"C:\music\X Marks the Pedwalk - Desolation.mp3", //fine
"#EXTINF:287,Xandria - Ginger Sunset Expire", //fine
"C:\music\andria - Ginger Sunset Expire.mp3", //fine
"C:\music\xandria - Ginger Sunset Expire.mp3", // FAILS
"C:\\music\\xandria - Ginger Sunset Expire.mp3" //fine
]
alert (strArray);
我可以用逃脱斜线绕过它。但我的问题是实际导致错误的原因。我认为这可能与\ x有关,但这意味着第一首曲目也会失败。所以我有点困惑。
答案 0 :(得分:3)
我认为它可能与\ x有关,但这意味着第一首曲目也会失败。
不,因为x
和X
不是同一个字符。 :-) \x
(小写为x
)is special in string literals,\X
(大写为X
)不是。
最佳做法是总是转义反斜杠,它们实际上是反斜杠而不是转义序列的开头。否则,你将绊倒自己。
答案 1 :(得分:0)
您可以使用功能str_replace替换反斜杠。
<?php
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
// Produce: <body text='black'>