0

刚刚注意到一些字符串(取自从 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 有关,但这意味着第一首曲目也会失败。所以我有点困惑。

4

2 回答 2

3

我认为这可能与 \x 有关,但这意味着第一首曲目也会失败。

不,因为xX不是同一个字符。\x:-) (小写的)x字符串文字中是特殊的\XX大写的)不是。

最佳实践是始终转义反斜杠,这些反斜杠实际上是反斜杠,而不是转义序列的开头。否则,你绊倒自己。

于 2013-01-27T10:25:43.740 回答
0

您可以使用函数 str_replace. 替换反斜杠。

<?php

$bodytag = str_replace("%body%", "black", "<body text='%body%'>");

// Produce: <body text='black'>

http://php.net/manual/es/function.str-replace.php

于 2019-01-03T23:59:41.900 回答