从父文档获取输入值

时间:2013-04-14 17:33:35

标签: php variables curl

我正在使用CURL来抓取这样的网站:

<?php

$url = "http://www.bbc.com/news/";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

$curl_scraped_page = preg_replace("#(<\s*a\s+[^>]*href\s*=\s*[\"'])(?!http)([^\"'>]+)([\"'>]+)#",'$1http://www.bbc.com/news/$2$3', $curl_scraped_page);

echo $curl_scraped_page;
?>

正如您所看到的,URL已设为BBC新闻。但是,我希望URL成为变量。变量必须是parent.document的值。例如,在JQuery我会这样做:

var value = $("input", parent.document.body).val(); 

如何在PHP中设置类似的内容?我用谷歌搜索但我在PHP中找不到关于parent.document的任何内容。

1 个答案:

答案 0 :(得分:1)

PHP是服务器端脚本语言,因此无权访问当前的HTML页面。它是在HTML发送到客户端浏览器之前处理的,因此在处理脚本时甚至不存在parent.document

如果您想将HTML页面中的数据传递到PHP脚本,可以使用HTML <form>JavaScript来执行此操作/ JQuery AJAX请求。

例如,以下代码会将input的值传递给PHP脚本:

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function pass(){
    var value = $("input", parent.document.body).val(); 
    $.ajax({
        type: "POST",
        url: "myscript.php",
        data: { mydata: value }
    }).done(function( msg ) {
        alert( "Data Saved: " + msg );
    });
}
</script>
</head>
<body>
<input type="text" />
<button onclick="pass();return false;">Pass Value</button>
</body>
</html>

修改后的脚本(myscript.php):

<?php
$url = isset($_POST['mydata']) ? $_POST['mydata'] : '';
$curl_scraped_page = '';

if(!empty($url)){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $curl_scraped_page = curl_exec($ch);
    curl_close($ch);

    $curl_scraped_page = preg_replace("#(<\s*a\s+[^>]*href\s*=\s*[\"'])(?!http)([^\"'>]+)([\"'>]+)#",'$1'.$url.'$2$3', $curl_scraped_page);
}

echo $curl_scraped_page;
?>

我建议使用$(id)来检索<input>而不是$("input",context)的值。

E.g。

var value = $('#txt').val();

HTML

<input type="text" id="txt" />

有关JQuery.ajax的更多信息,请参阅here