我有一个长字符串,其中包含一些类似于此的奇怪字符和引号:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxdewhriho" shfihewr32" fhihifhewt43t [sdfhiort] sfhishf" GG" fhdif
它是我在我的PHP文件中创建的对象的一部分,该文件是在我的脚本开头创建的,并作为字符串存储在$ song-> lyrics属性中。我试过通过这个将它传递给我的AngularJS控制器:
<div ng-controller="lyricsMod" ng-init="songInit('<?php echo $song->lyrics')">
这是我的AngularJS控制器:
displaySong.controller('lyricsMod', ['$scope', function($scope) {
//Set up initial scopes:
$scope.songInit = function(songLyrics) {
$scope.lyrics = songLyrics;
}
但是我一直从AngularJS得到这个错误:
Error: [$parse:lexerr]
https://docs.angularjs.org/error/$parse/lexerr?p0=Unterminated
我尝试在字符串上使用mysqli_real_escape_string无济于事。当AngularJS命中字符串中的第一个引号时,错误似乎正好发生。我已经读过你需要在字符串上使用sanitize,但我不知道如何在PHP或HTML中清理字符串。对不起,如果这是一个菜鸟问题,我开始学习AngularJS。有没有更好的做法将我的PHP变量传递给AngularJS,或者我在这里遗漏了什么?
答案 0 :(得分:1)
您没有关闭PHP代码块(您错过了?>
)。
另外,我认为它需要进行JSON编码才能插入到JS中(这也会消除对php块的引号的需要),并且HTML有权插入HTML attr:
<div ng-controller="lyricsMod" ng-init="songInit(<?php echo htmlentities(json_encode($song->lyrics)); ?>)">