Jquery解析字符串中的HTML

时间:2011-05-18 21:06:02

标签: php jquery

我尝试搜索相关帖子,并且很难弄清楚如何修复我的查询 - 我非常接近,非常感谢任何帮助(Jquery新手)。

我在PHP中编程,并尝试从标记或文本中提取HREF值。要么工作。

我基本上将我的HTML代码放在一个字符串中,可能包含多个标签,并希望将标签的文本加载到PHP数组或变量中(现在只是尝试警告结果,我可以稍后将其转储) )。

我的PHP代码:

<?php
$info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong>';

echo '<script type="text/javascript">';
echo '$("document").ready( function () {';
echo 'alert($("a", $("' . $info . '")).html());';
echo '});';
echo '</script>';
?>

上面没有提醒任何事情。放入

echo 'alert("yes")'; 

确实有效,所以我猜我的语法有一些基本的错误,但4小时后仍无法找到它! :)

提前致谢。

7 个答案:

答案 0 :(得分:5)

您不是Javascript - 转义字符串中的引号。

您的代码会创建类似于

的Javascript
$("<li>...<a href="http..."...")

属性中的引号结束Javascript字符串,从而产生语法错误。

您需要致电json_encode

答案 1 :(得分:3)

SLaks 还有其他问题。但是,它不是:

$("document").ready();

这是:

$(document).ready();

前者是名为<document>的标记的选择器。

答案 2 :(得分:2)

这应该按照你想要的方式工作:

<?php
$info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong></li>';
?>

<script type="text/javascript">
    $(document).ready( function () {
        alert($("a", $("<?php echo $info; ?>")).html());
    });
</script>

答案 3 :(得分:1)

您没有关闭li标签

$info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong>';

应该是

$info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong></li>';

答案 4 :(得分:1)

你应该逃避信息。它打破了,因为你在双引号内有双引号:

$info = addslashes($info);

$info = json_encode($info);

或只是

$info = str_replace('"', '\\"');

答案 5 :(得分:0)

首先尝试保存HTML是一个JS变量,然后使用它。此外,heredocs是你的朋友。

<?php
$info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong></li>';

echo <<<END
<script type="text/javascript">
$(function(){
  var HTML = '$info';
  alert($('a', $(HTML)).html());
});
</script>
END;
?>

答案 6 :(得分:0)

echo '<script type="text/javascript">
    $(document).ready( function () {
        var info = \''.$info.'\';
        $("a").html(info);
        alert(info);
    });
</script>';