将 PHP 字符串(html 源代码)转换为 jQuery 对象美元符号 $?

Posted

技术标签:

【中文标题】将 PHP 字符串(html 源代码)转换为 jQuery 对象美元符号 $?【英文标题】:Transform PHP String (of html source) into jQuery Object Dollar Sign $? 【发布时间】:2012-07-28 04:51:36 【问题描述】:

假设我有一个完整的 html 页面源字符串(在 php 中),例如:

<?php
$html_source = '
    <html>
        <head>
        </head>
        <body>
            <div class="class1">Hello!</div>
            <div class="class2">World</div>
        </body>
    </html>'; //PHP
?>

然后我想将该 php 字符串用作 jQuery $ 对象,以便像这样使用:

alert(
    $("div.class1").html(); //jQuery
);

那么我如何将 PHP 字符串转换为 jQuery 美元符号 $

注意: 这是因为我的情况是......我有一个包含完整 html 页面源的数据库。然后我必须将它们解析出来,但不是整个页面。一些 DOM 过滤区域。就像,里面那个页面源的“右面板”。这就是问题所在。

【问题讨论】:

你不能在客户端的脚本中使用 PHP 变量,它被输出到服务器端的浏览器并且消失了。 您似乎对 PHP 和 jQuery 的不同角色感到有些困惑。 PHP 是服务器端的,并且在 jQuery 进入游戏之前很久就发生了。 jQuery 是客户端。两者没有关系,因此不存在从一个转换到另一个的问题。 PHP 只能向客户端输出一个字符串,然后由 jQuery 提取和处理。 你好 Utkanos,我非常了解他们。只需考虑像我这样的所有可能条件,即我有一个包含 html 页面源的数据库。然后我必须解析它们,但不是整个页面。一些 DOM 过滤区域。比如,该页面源的“右面板”。那你会怎么做? 这取决于您是想在客户端还是在服务器上处理 DOM。你说 jQuery,所以我假设前者。在这种情况下,PHP 不能直接与 jQuery 对话——它只能输出给它。如果是服务器端,PHP 有自己的 DOM 遍历/操作函数 - 请参阅 DOMDocument 的文档。 根据您的更新,您可能会在服务器端执行此操作,以避免在两端发送不需要的数据并浪费带宽。 【参考方案1】:

首先,让字符串 javascript 安全。给定一个字符串,json_encode 将使其 JS 安全(尽管不是 JSON)。

然后,您可以将其输出到 HTML 中的脚本块中,并将其传递给 jQuery 函数。

<script>
var foo = $(<?php echo json_encode($html_source); ?>);
</script>

【讨论】:

var foo 那么呢?我如何像 jQuery 一样进行解析?在这种正常情况下会是什么样子:$("div.class2).html 使用上下文选择器$("div.class1", foo).html()或更明确:foo.find('div.class2').html() hmmm.. 是的,它可以工作,但不能直接作为$。所以这意味着,只有.find 方法可以工作。没有它就行不通。 :T【参考方案2】:

尝试使用 Zend 框架/库的 Zend_Dom_Query 部分。它理解大部分 CSS2,当您需要更强大的功能时,您可以随时回退到 xpath。

如果您想拥有更像 JQuery 的外观,您也可以尝试 phpquery 项目。

【讨论】:

嗯.. 似乎很有用。但让它成为最后的方式。我不能直接用作jQuery 吗? 没有用 php 编写的 Javascript 虚拟机(至少我不知道),我想你可以用 fork() 启动 Rhino 或 V8 虚拟机,但这可能很糟糕想法,仍然没有解决从vm问题中获取数据的问题。【参考方案3】:

如果您需要 html 部分,或者如果您需要使用 php 处理此部分,则可以使用 php dom 文档扩展。

【讨论】:

这是因为我的情况是.. 我有一个包含完整 html 页面源的数据库。然后我必须将它们解析出来,但不是整个页面。一些 DOM 过滤区域。就像,里面那个页面源的“右面板”。这就是问题所在。 比起使用 dom 文档,但有一件事是,当您使用 dom 文档时,html 必须是纯 XHTML 之类的。【参考方案4】:

试试这个

<script>
     var myStr = $(<?php echo $html_source; ?>);
</script>

【讨论】:

以上是关于将 PHP 字符串(html 源代码)转换为 jQuery 对象美元符号 $?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Unity3D 中将类对象转换为 JSON 字符串?

js或者jq转换字符串问题

如何在 jq 中将 JSON 对象转换为 key=value 格式?

我想将图像数据(Texture2D)转换为 Base64 字符串并存储在 Unity3D(C#)中的 JSON 文件中

在jq中将字符串转换为json

将 PHP 字符串(html 源代码)转换为 jQuery 对象美元符号 $?