URLグラバーを設定しましたが、正常に機能していました。次のような応答ヘッダーにあるドキュメントのURLを取得します。
<script type='text/javascript' language='JavaScript'>
document.location.href = 'http\x3a\x2f\x2fcms.example.com\x2fd\x2fd\x2fworkspace\x2fSpacesStore\x2f61d96949-b8fb-43f1-adaf-0233368984e0\x2fFinancial\x2520Agility\x2520Report.pdf\x3fguest\x3dtrue'
</script>
これが私のグラバースクリプトです。
<?php
set_time_limit(0);
$target_url = $_POST['to'];
$html =file_get_contents($target_url);
$pattern = "/document.location.href = '([^']*)'/";
preg_match($pattern, $html, $matches, PREG_OFFSET_CAPTURE, 3);
$raw_url = $matches[1][0];
$eval_url = '$url = "'.$raw_url.'";';
eval($eval_url);
echo $url;
ドキュメント管理システムに変数を追加する必要があったため、各ドキュメントのURLにはURLの最後に?guest=trueが必要でした。これを行うと、グラバーは完全なURLを返し、それをファイル名に追加します。そこで、/ guest = trueに達するまで、URLだけを取得するようにしました。このコードで:
<?php
set_time_limit(0);
$target_url = $_POST['to'];
$html =file_get_contents($target_url);
$pattern = "/document.location.href = '([^']*)\x3fguest\x3dtrue'/";
preg_match($pattern, $html, $matches, PREG_OFFSET_CAPTURE, 3);
$raw_url = $matches[1][0];
$eval_url = '$url = "'.$raw_url.'";';
eval($eval_url);
echo $url;
なぜ?guest = trueの部分までURLを返さないのですか?別名、なぜこれが機能しないのですか?そして、修正は何ですか?