PHP:フォームを使用したCURL関数?

ウィリアム

PHPを使用して英国の郵便番号をlongsとlatsに変換しようとしています。

そのため、Googleマップを使用する代わりに、PHP CURLを使用し、実装がより簡単な代替プロバイダーを使用します。

ただし、フォームの入力フィールドを使用してCURL関数が何かを返すようにするのに問題があります。

基本的に、フォームの入力フィールドに郵便番号を入力して検索を押すだけで、CURLを使用してその郵便番号の長さと緯度を返す必要がありますが、コードはそれを行わず、代わりに入力フィールドを出力しますURLバーの値とそれだけです!

これが私のコード全体です:

<?php 
error_reporting(-1);
ini_set('display_errors', 'On');
if (isset($_POST["postcode"])) {
function postCode2Geog($code){
//$code = strtolower(str_replace(' ','',$code));

$code = $_POST["postcode"];

 $uri = "http://www.streetmap.co.uk/streetmap.dll?GridConvert?name=".$code."&type=Postcode";

 $ch = curl_init($uri);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($ch);
 curl_close($ch);

 preg_match('#long</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$longMatch);
 preg_match('#lat</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$latMatch);
 $long = $longMatch[1];
 $lat = $latMatch[1];

 return array($lat,$long);
}
}
?>

これはHTMLの部分です。

<form action="" method="GET">

<input type="text" name="postcode" />

<input type="submit" value="search" >
</form>

誰かがこれについてアドバイスしてもらえますか?

編集:

error_reporting(-1);
ini_set('display_errors', 'On');
if (isset($_POST["postcode"])) {

//$code = strtolower(str_replace(' ','',$code));

$code = $_POST["postcode"];

 $uri = "http://www.streetmap.co.uk/streetmap.dll?GridConvert?name=".$code."&type=Postcode";

 $ch = curl_init($uri);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($ch);
 curl_close($ch);

 preg_match('#long</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$longMatch);
 preg_match('#lat</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$latMatch);
 $long = $longMatch[1];
 $lat = $latMatch[1];

 return array($lat,$long);
}
ElefantPhace

まず、$_POST変数を使用したいので、フォームメソッドを次のように変更する必要があります。POST

<form action="" method="POST">

また、実際に関数を呼び出すことはありませif(isset($_POST['whatever']))んがGET、フォームメソッドとして使用ているため、チェックすると設定されないため、それを知ることはできません

そのコードブロックの外側で関数を定義し、内側から呼び出す必要があります。

実用的な例を次に示します。別の関数を使用してcURLを実行し、エラーを返しました。

<?php

if(isset($_POST['postcode'])){
    $data = postCode2Geog($_POST['postcode']);
    var_dump($data);
}else{
    displayForm();
}

function displayForm(){
    echo "<form action='' method='post'>";
    echo "<input type='text' name='postcode' />";
    echo "<input type='submit' value='search' />";
    echo "</form>";
}

function postCode2Geog($code){
    $code = urlencode($code);
    $uri = "http://www.streetmap.co.uk/streetmap.dll?GridConvert?name=$code&type=Postcode";

    $output = url_get_contents($uri);

    preg_match('#long</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$longMatch);
    preg_match('#lat</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$latMatch);
    $long = $longMatch[1];
    $lat = $latMatch[1];

    return array('lat'=>$lat,'long'=>$long);
}

function url_get_contents($url){
    $crl = curl_init();
    $timeout = 10;
    curl_setopt_array($crl, array(
        CURLOPT_URL => $url,
        CURLOPT_ENCODING => 'UTF-8',
        CURLOPT_RETURNTRANSFER => '1',
        CURLOPT_FOLLOWLOCATION => '1',
        CURLOPT_CONNECTTIMEOUT => $timeout)
    );
    $ret = curl_exec($crl);
    $info = curl_getinfo($crl);

if ($ret === false || $info['http_code'] != 200) {
   $ret = "No cURL data returned for $url [". $info['http_code']. "]";
   if (curl_error($crl))
     $ret .= "<br>\n Error: ". curl_error($crl) . "Code: " . curl_errno($crl);
}
    curl_close($crl);
    return $ret;
}

EC1R4RRは
array(2) { ["lat"]=> string(9) "51.526254" ["long"]=> string(9) "-0.109119" }

少なくとも配列内のどれがどれであるかを確認できるように編集しました。そしてそれらを使用するには$data['lat']$data['long']

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHP:フォームを使用したCURL関数?

分類Dev

PHP(POST)を使用したcURLを含む完全なフォーム

分類Dev

GET(PHP:Curl、Javascript)を使用したフォームでのAPIのクエリ

分類Dev

php変数を使用したHTMLフォーム

分類Dev

Javascriptを使用したPHPフォーム

分類Dev

HTMLフォームまたはcURLを使用してPHPで複数のファイルをアップロードする

分類Dev

codeigniterの組み込み関数を使用したプロセスフォーム

分類Dev

Javascriptを使用して作成されたフォームのJavascript関数

分類Dev

PHP:PHPでCurlを使用してHTMLフォームに値を送信する

分類Dev

PHPのフォームからの変数を使用したJavascriptの操作

分類Dev

PHPでcurlを使用してフォームデータを追加する

分類Dev

PHP:複数のphpファイルで$ _SESSION変数を使用したフォームの自動入力

分類Dev

PHP:複数のphpファイルで$ _SESSION変数を使用したフォームの自動入力

分類Dev

関数からPHPへのフォームの隠れた変数を取得します

分類Dev

PHP cURLを使用して手動で「フォーム送信」を行う方法は?

分類Dev

htmlフォーム要素を引数としてphp関数に渡します

分類Dev

送信された特定のフォームをjQuery / Javascriptを使用して関数に渡します

分類Dev

モデルで定義した関数を使用してRubyRailsのフォームを検証する方法

分類Dev

ajaxを使用してphp関数から値を取得するフォーム送信時

分類Dev

(フォームから取得した)入力変数を使用してphp関数を呼び出すには、フォームを送信する必要があります

分類Dev

PHPファイルの特定の関数にフォームを送信します

分類Dev

完了した関数jqueryでフォームをリロードします

分類Dev

フォームonclickフォーム名のjquery関数で使用するjs変数を作成します

分類Dev

フォームボタンとifステートメントを使用した外部関数の切り替え

分類Dev

javascript関数を使用してフォームを更新またはリセットする方法

分類Dev

フォーム送信のアクションにPHP関数をどのように使用しますか?

分類Dev

同じ機能を使用した複数のフォーム送信

分類Dev

2つのJavaScriptを使用したHTML複数フォーム

分類Dev

JQuery、Ajax、PHP、Jsonを使用したフォーム検証

Related 関連記事

  1. 1

    PHP:フォームを使用したCURL関数?

  2. 2

    PHP(POST)を使用したcURLを含む完全なフォーム

  3. 3

    GET(PHP:Curl、Javascript)を使用したフォームでのAPIのクエリ

  4. 4

    php変数を使用したHTMLフォーム

  5. 5

    Javascriptを使用したPHPフォーム

  6. 6

    HTMLフォームまたはcURLを使用してPHPで複数のファイルをアップロードする

  7. 7

    codeigniterの組み込み関数を使用したプロセスフォーム

  8. 8

    Javascriptを使用して作成されたフォームのJavascript関数

  9. 9

    PHP:PHPでCurlを使用してHTMLフォームに値を送信する

  10. 10

    PHPのフォームからの変数を使用したJavascriptの操作

  11. 11

    PHPでcurlを使用してフォームデータを追加する

  12. 12

    PHP:複数のphpファイルで$ _SESSION変数を使用したフォームの自動入力

  13. 13

    PHP:複数のphpファイルで$ _SESSION変数を使用したフォームの自動入力

  14. 14

    関数からPHPへのフォームの隠れた変数を取得します

  15. 15

    PHP cURLを使用して手動で「フォーム送信」を行う方法は?

  16. 16

    htmlフォーム要素を引数としてphp関数に渡します

  17. 17

    送信された特定のフォームをjQuery / Javascriptを使用して関数に渡します

  18. 18

    モデルで定義した関数を使用してRubyRailsのフォームを検証する方法

  19. 19

    ajaxを使用してphp関数から値を取得するフォーム送信時

  20. 20

    (フォームから取得した)入力変数を使用してphp関数を呼び出すには、フォームを送信する必要があります

  21. 21

    PHPファイルの特定の関数にフォームを送信します

  22. 22

    完了した関数jqueryでフォームをリロードします

  23. 23

    フォームonclickフォーム名のjquery関数で使用するjs変数を作成します

  24. 24

    フォームボタンとifステートメントを使用した外部関数の切り替え

  25. 25

    javascript関数を使用してフォームを更新またはリセットする方法

  26. 26

    フォーム送信のアクションにPHP関数をどのように使用しますか?

  27. 27

    同じ機能を使用した複数のフォーム送信

  28. 28

    2つのJavaScriptを使用したHTML複数フォーム

  29. 29

    JQuery、Ajax、PHP、Jsonを使用したフォーム検証

ホットタグ

アーカイブ