2012-10-31 6 views
2

이 사이트에서 몇 가지 임의 단락을 얻기 위해 PHP를 사용하는 찾고 있어요 : http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspxPHP 양식 제출 및 구문 분석

제출 버튼을 시작하는 코드의 짧은 세트가 무엇합니다 (를 입력 할 필요가 없습니다 텍스트 필드)를 분석하고 결과 임의의 텍스트 만 구문 분석합니까?

제출 작품이 작동하지 않는 것 같습니다.

+0

무슨 시도를? "시작하다"는 것은 무엇을 의미합니까? 제출 버튼에서 트리거를 의미합니까? –

답변

1

더 유연한 방법 - 동적으로 viewstate가 및 eventvalidation 가져 오기 :

<?php 
$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 

//__VIEWSTATE 
$viewstate = ''; 

//__EVENTVALIDATION 
$eventvalidation = ''; 

// Fetch VIEWSTATE 
$p1 = '<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="'; 
$p = strpos($c, $p1); 
if ($p !== false) { 
    $s = substr($c, $p+strlen($p1)); 
    $pcs = explode('"', $s); 
    if (!empty($pcs[0])) { 
     $viewstate = $pcs[0]; 
    } 
} 

// Fetch EVENTVALIDATION 
$p1 = '<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="'; 
$p = strpos($c, $p1); 
if ($p !== false) { 
    $s = substr($c, $p+strlen($p1)); 
    $pcs = explode('"', $s); 
    if (!empty($pcs[0])) { 
     $eventvalidation = $pcs[0]; 
    } 
} 

// PUT YOUR OBJECT & SUBJECT HERE 
$postvalues = array(
    'tmpl$main$txtSubject' => '', 
    'tmpl$main$txtObject' => '', 
    'tmpl$main$btnNew' => 'New Paragraph', 
); 

$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?__VIEWSTATE='.urlencode($viewstate).'&__EVENTVALIDATION='.urlencode($eventvalidation).'&tmpl%24main%24txtSubject='.urlencode($postalues['tmpl$main$txtSubject']).'&tmpl%24main%24txtObject='.urlencode($postalues['tmpl$main$txtObject']).'&tmpl%24main%24btnNew=New%20Paragraph'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 


$t = '<span id="tmpl_main_lblPara" class="randomSentence">'; 
$p = strpos($c, $t); 
if ($p !== false) { 
    $s = substr($c, $p + strlen($t)); 
    $pcs = explode('</span>', $s); 


    echo $pcs[0]; 
} 
+0

작동하는지 알려주세요. –

+0

출력에 "" – Scott

+0

이 포함되어있는 것 같습니다. 지금 다시 확인하십시오. –

1

페이지를 POST하면됩니다. 또는이 URL을 얻으십시오 http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?_VIEWSTATE=%2FwEPDwUINTQyOTcxOTkPZBYCZg9kFgQCAg9kFgICAQ9kFgICAQ9kFgQCBw8PFgIeBFRleHRlZGQCCQ8PFgQfAGUeB1Zpc2libGVoZGQCAw8PFgIfAAU4Q29weXJpZ2h0IDIwMDcgd2F0Y2hvdXQ0c25ha2VzLmNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5kZGTorXr6Gf6R0THMyZRJWZJWtrWHYw%3D%3D&_EVENTVALIDATION=%2FwEWBAKs0KOMDAKf643lBALimIbkBQLx2ZbtAfvuWUuGYHixchu%2FJnnxDjXxcnqg&tmpl%24main%24txtSubject=&tmpl%24main%24txtObject=&tmpl%24main%24btnNew=New+Paragraph

span.randomSentence 콘텐츠를 가져와야합니다. This이 도움이 될 수 있습니다.

편집
코드 내가 테스트 한 :

$url = 'http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx?__VIEWSTATE=/wEPDwUINTQyOTcxOTkPZBYCZg9kFgQCAg9kFgICAQ9kFgICAQ9kFgQCBw8PFgIeBFRleHRlZGQCCQ8PFgQfAGUeB1Zpc2libGVoZGQCAw8PFgIfAAU4Q29weXJpZ2h0IDIwMDcgd2F0Y2hvdXQ0c25ha2VzLmNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5kZGTorXr6Gf6R0THMyZRJWZJWtrWHYw==&__EVENTVALIDATION=/wEWBAKs0KOMDAKf643lBALimIbkBQLx2ZbtAfvuWUuGYHixchu/JnnxDjXxcnqg&tmpl%24main%24txtSubject=&tmpl%24main%24txtObject=&tmpl%24main%24btnNew=New%20Paragraph'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 
$c = curl_exec($ch); 
curl_close($ch); 

$p = strpos($c, '<span id="tmpl_main_lblPara" class="randomSentence">'); 
if ($p !== false) { 
    $s = substr($c, $p); 
    $pcs = explode('</span>', $s); 
    echo $pcs[0]; 
} 
+0

viewstate 등으로 전체 URL을 어떻게 얻었습니까? – Scott

+0

폼을 게시하고 파이어 버그 필드를 보았다. 나는 지금 일하고 있지 않습니다. 필요한 경우 더 유연한 솔루션을 제공 할 것입니다. 너? –

+0

그것은 최고 일 것입니다 ... 고마워요. – Scott