2017-03-18 2 views
3

ここでforeachループはリンクに入る電話番号を返しますが、このスクリプトを実行しようとするとエラー400のエラーが返されます。私もuseragentを使ってみましたが、それでもエラーは解決しません。どんな助けも素晴らしいだろう。PHP CURLはループ内で400エラーを返します

PS。これが私の最初の質問です。私がこの問題を解決するために何かを提供できるかどうかを教えてください。

foreach($var5 as $number) { 
    $ch = curl_init(); 
    $ch1="http://bmsms.co.in/sendsms.aspx?mobile=0000000000&pass=xxxxxxxx&senderid=xxxxxxx&to=$number&msg=hey"; 
    echo $ch1; 
    curl_setopt($ch, CURLOPT_URL, "$ch1"); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'); 
    curl_exec($ch); 
    curl_close($ch); 
} 

アップデート:私はurlencodeを追加すると

悪い要求は間違いなく行くが、私はこのURLを実行する:http://bmsms.co.in/sendsms.aspx?mobile=1234567890&pass=password&senderid=ID&to=+ 9408644603&msg=heyではなく、このURLが実行されます。http://bmsms.co.in/sendsms.aspx?mobile=1234567890&pass=password&senderid=ID&to=%2B+9408644603&msg=hey

。また、ここで私が唯一持っています残りのフィールドの電話番号にurlencodeを適用しました。私は自分自身を直接入力しています。また、電話番号が正しくない場合、apiが実行されないため、おそらく悪い要求が発生します。

+0

ループのすべてのリクエストで '400'レスポンスが得られますか? –

+0

@ nikos.svnkはい悪いリクエスト400を何回も言うエラーが表示されます。 –

+0

私はこれに新しいので、あなたは同じを決定する方法を教えてくれますか? @ chris85 –

答えて

1

何らかの理由で電話番号の+が受信アプリケーションシステムを壊しています。 URLエンコーディングでは数値だけが必要なため、この問題は解決されません。正規表現を使用すると、先行する数字以外の文字をすべて置き換えることができます。

preg_replace('/^\D+/','', $serverthing) 

\D非数(\dが数である)です。
^は、文字列の先頭です。
+は、前の文字/グループの1つ以上です。
/は、正規表現の開始と終了を示す区切り文字です。

関連する問題