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) 来检索 an<input>而不是$("input",context).
例如
var value = $('#txt').val();
并且在HTML:
<input type="text" id="txt" />
有关更多信息,JQuery.ajax请参见此处。