分页中撇号的问题

issue with apostrophes in pagination

本文关键字:问题 分页      更新时间:2023-09-26

当查询中有一些撇号时,我的分页出现问题。这是我用来创建分页的:

<script type="text/javascript">
    $('#pagination-demo').twbsPagination({
         totalPages: 50,
         visiblePages: 5,
         prev: '<',
         next: '>',
         first: '<<',
         last: '>>',
         href: 'http://www.monsite.com/search/index.php?a=web&q={$query}&page={{number}}',
         onPageClick: function (event, page) {
                 $('#page-content').text('Page ' + page);
         }
     });
</script>

例如,搜索"d’enterprise"这个词,我的页面的分页就会消失。

如果我把它写成"d enterprise ",分页就可以了,我有这个链接:

http://www.monsite.com/search/index.php?a=web&q=d%20entreprise&page=2

有人有主意吗?我有义务做"替换"或类似的事情来改变我的撇号吗?或者有一种方法来保持它在我的查询和分页?

这是因为您直接将PHP中的文本转储到javascript上下文中导致了JS语法错误。例如:

$foo = "D'Enterprise";
echo "<script> var foo = '$foo';</script>";

将把这个发送给用户:

 var foo = 'D'Enterprise';
           ^-^----start/stop string
              ^^^^^^^^^^--- "Enteprise" - undefined variable
                        ^^--- start an unterminated string

如果你做过任何基本的调试,比如检查你的浏览器控制台,你就会看到这个错误。

简而言之,永远不要直接从PHP输出文本到"外部"上下文中,特别是当该上下文中是其他语言时。你很容易在这种语言中造成语法错误(就像你现在正在做的那样)。始终使用适当的输出方法,对于PHP生成Javascript,就是使用JSON:

$foo = "D'Enterprise";
$temp = json_encode($foo);
echo "<script> var foo = $temp; </script>";

生产

var foo = 'D''Enterprise';