将PHP中的变量清理为AngularJS

时间:2015-02-12 03:50:53

标签: php angularjs scope

我有一个长字符串,其中包含一些类似于此的奇怪字符和引号:

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,或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:1)

您没有关闭PHP代码块(您错过了?>)。

另外,我认为它需要进行JSON编码才能插入到JS中(这也会消除对php块的引号的需要),并且HTML有权插入HTML attr:

<div ng-controller="lyricsMod" ng-init="songInit(<?php echo htmlentities(json_encode($song->lyrics)); ?>)">