php print中的JavaScript SyntaxError

时间:2013-09-22 17:53:17

标签: javascript php

我在java控制台中收到此错误:“SyntaxError:unterminated regular expression literal”

我真的不明白。下面是我的代码,如果有人能指出我错过了什么,我会永远感激不尽。

PHP代码:

print '
<script type="text/javascript">
function fakeUpload() {
    $("#fakeupload").val(this.files && this.files.length ? this.files[0].name : this.value.replace(/^C:\\fakepath\\/i, ""));
}
</script>';

感谢。

2 个答案:

答案 0 :(得分:2)

两个斜杠(\\)在PHP(\)的输出中成为斜杠。你必须写四个斜杠(\\\\)。

让我们看一下当前代码的输出:

this.value.replace(/^C:\fakepath\/i, "");

最后一个反斜杠转义正则表达式终止符(正斜杠),因此正则表达式终端未终止。

以下是更新代码的输出:

this.value.replace(/^C:\\fakepath\\/i, "");
---------------------------------^^
escapes                           |
----------------------------------|

最后一个反斜杠不会影响任何东西,因为它在它之前被反斜杠转义。

答案 1 :(得分:1)

你错过了一个逃避斜线

this.value.replace(/^C:\\fakepath\\//i, ""));
                                    ^

试试这个

<?php
print '
<script type="text/javascript">
function fakeUpload() {
    $("#fakeupload").val(this.files && this.files.length ? this.files[0].name : this.value.replace(/^C:\\fakepath\\//i, ""));
}
</script>';