2012-07-30 41 views
2

可以说我有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过滤的区域。就像那个页面源代码的“右侧面板”一样。那就是问题所在。

+0

你不能在客户方在脚本中使用PHP变量,它的输出到浏览器的服务器端和消失。 – adeneo 2012-07-30 13:48:58

+2

对于PHP和jQuery的不同角色,您似乎有点困惑。 PHP是服务器端,并且在jQuery进入游戏之前就发生了。 jQuery是客户端。这两者没有任何关系,所以不存在从一个转换到另一个的问题。 PHP只能向客户端输出一个字符串,然后可以通过jQuery来获取和处理。 – Utkanos 2012-07-30 13:49:08

+0

你好Utkanos,我很了解他们。只要考虑像我这样的所有可能的条件,我有一个数据库包含HTML页面源。然后我必须解析它们,但不是全部页面。一些DOM过滤的区域。就像该页面源代码的“右侧面板”一样。那么你会怎么做? – 2012-07-30 13:56:55

回答

1

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

如果您希望拥有更多类似外观的JQuery,您也可以尝试phpquery项目。

+0

嗯..似乎很有用。但让它成为最后的方式。我不能直接用作'jQuery'吗? – 2012-07-30 13:52:40

+0

没有用vm写的Javascript vm(至少不是我所知道的),我想你可以启动一个[Rhino](http://www.mozilla.org/rhino/)或一个[V8](http: //code.google。/ v/v),但是这可能是一个糟糕的主意,并且仍然不能解决从vm问题中获取/输出数据的问题。 – complex857 2012-07-30 13:55:54

3

首先,使字符串JavaScript安全。给定一个字符串,json_encode将使它JS安全(虽然不是JSON)。

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

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

'var foo'呢?我如何使解析像jQuery?如何看起来像这样的正常场景:'$(“div.class2).html' – 2012-07-30 14:04:04

+2

使用上下文选择器'$(”div.class1“,foo).html()'或者更明确的:'foo。 find('div.class2')。html()' – 2012-07-30 14:04:51

+0

hmmm .. ya它可以工作,但不能直接作为'$'。所以这意味着,只有'.find'方法才能工作。 。:T – 2012-07-30 18:57:49

0

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

+0

这是因为我的情况是..我有一个数据库包含完整的HTML页面源,然后我必须将它们解析出来,但不是全部都是整个页面一些DOM过滤的区域,比如,该页面的“右侧面板”源代码内部。这就是问题 – 2012-07-30 13:59:47

+0

比起使用dom文档,但是当你使用dom文档时,html必须是纯粹的XHTML而不是它可能的东西 – 2012-07-30 14:13:28

-1

试试这个

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

HTML源代码包含'''字符,所以不会工作。 – Quentin 2012-07-30 18:57:10