2014-11-11 2 views
1

URL 끝에있는 번역을 반환하는 내 웹 사이트의 무료 번역 서버 (다른 사람이 제공)를 사용하려고합니다. 예를 들어,이 URL을 입력하면 내 문제는 내 웹 페이지 내 사이트를 떠나지 않고도 HTML/PHP/자바 스크립트/아약스를 사용하여이 URL의 출력을 캡처 할 수있는 방법 영어 http://www.edrdg.org/cgi-bin/wwwjdic/wwwjdic.cgi?1ZUQ%E7%BF%BB%E8%A8%B3URL (다른 사람의 서버)에 입력을 보내고 출력을 PHP에서 다시 사용하려면 어떻게해야합니까?

에 번역을 반환합니다.

지금까지 내 HTML

<script> 
    function foo() 
    { 
     var translation; 
     $.get('http://www.edrdg.org/cgi-bin/wwwjdic/wwwjdic.cgi?1ZUQ%E7%BF%BB%E8%A8%B3', function(data) 
     { 
      translation = data; 
     } 
    } 
</script> 

의 태그에 투입되는 함수를 생성하고,이 끔찍한와 '아무튼 보이는 나에게이

<div> 
    <p><?php echo foo(); ?></p> 
</div> 

과 같이 호출하려고 시도 그래서 내 주요 질문은 어떻게 그 URL을 제공하고 또한 그 데이터를 저장하고 내 HTML에 표시 할 수 캡처 무엇입니까? 감사.

+0

시작 : http://api.jquery.com/jquery.ajax/ –

답변

2

PHP의 JavaScript 함수를 사용하려고합니다. 물론 작동하지 않습니다. JavaScript는 브라우저에서 실행되며 PHP는 서버에서 실행됩니다.

PHP에서 URL에서 데이터를 얻을 수있는 가장 쉬운 방법은 file_get_contents를 사용하는 것입니다 : 페이지 그냥 텍스트 내용이기 때문에

<div> 
    <p> 
    <?php 
    echo file_get_contents('http://www.edrdg.org/cgi-bin/wwwjdic/wwwjdic.cgi?1ZUQ%E7%BF%BB%E8%A8%B3'); 
    ?> 
    </p> 
</div> 
0

file_get_contents이 특정 경우에 잘 작동합니다,하지만 난의 조합을 사용하십시오 CURL 및 XPath는 html을 배치하지 않고 일부 노드 값을 가져 오려는 경우에 유용합니다.

PHP curl.php 여기

<?php 
$url = $_REQUEST['url']; 

$curl = curl_init($url); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 

$html = curl_exec($curl); 
     curl_close($curl); 


$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTML($html); 
libxml_clear_errors(); 
$xpath = new DOMXPath($dom); 


// Find stuff 
$result = $xpath->query("/html/body/pre"); 

$data = array(); 

if (!is_null($result)) { 

    foreach ($result as $key => $element) { 
    $nodes = $element->nodeValue; 

    $data[$key] = $nodes; 

    } 
} 

print_r($data[0]); 

?> 

자바 스크립트/jQuery를

$.ajax({ 
    url: 'curl.php', 
    type: 'POST', 
    data: { 
     url: 'http://www.edrdg.org/cgi-bin/wwwjdic/wwwjdic.cgi?1ZUQ%E7%BF%BB%E8%A8%B3' 
    }, 
}) 
.done(function (data) { 
    $('body').append(data); 
}) 
.fail(function (data) { 
    console.log("error", data); 
}) 
+0

어떤 장점이 있습니까 이것 이상 file_get_contents? – irregular

+0

내 대답의 맨 위에 내가 언급 한 것. 이 특정 유스 케이스의 경우 텍스트 콘텐츠 일 뿐이므로 실제로는 그렇지 않습니다. 그러나이 텍스트는 신체의 큰 텍스트 블록뿐만 아니라 실제로는 물론 더 많은 중첩 된 내용에 맞게 맞춤 설정할 수 있습니다. – elzi

+0

흠, 나는 DOMDocument :: loadHTML()을 얻고있다. 빈 문자열이 입력으로 제공되므로 컬이 작동하지 않는다고 생각한다. Ajax를 활성화하려면 curl.php를 만들어야합니까? – irregular

관련 문제