cURL関数:curl_init

外部のサイトにアクセスして、さまざまな情報を取ってきたい場合の関数
リクエスト方法のカスタマイズが、file_get_contentsより自由

//初期化
$ch = curl_init();
//headerを表示するか
curl_setopt($curl, CURLOPT_HEADER, 0);
//レスポンスを表示するか
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);
//cookieを指定
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); 
//postで送信
curl_setopt($curl, CURLOPT_POST, 1);
?>
<?php
$url = "https://www.mercari.com/jp/search/?keyword=%E5%84%AA%E5%BE%85";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
$html = curl_exec($ch);
var_dump($html);

curl_close($ch);
?>

Error 403 Forbidden

error_reporting = E_ALL

関係者全員にメールする、だと思ってましたが、「全てのエラーを表示する」でした。
error_reporting = E_ALL

紛らわしい。

htmlentities()

文字列をhtmlエンティティ化

<?php

$str = "<!DOCTYPE html>"
	. "<html>"
	. "<head>"
	. "<meta charset='utf-8'>";

var_dump(htmlentities($str));
?>

エンティティ化しないと、string(49) “”

xml作成

<h3>xml</h3>
<?php

$axmlData = array();
$axmlData&#91;0&#93; = array 
		(
			"name"=> "楽天日本株4.3倍ブル",
			"return" => "123.54%",
			"asset" => "27625"
		);
$axmlData[1] = array
		(
			"name" => "小型株ファンド",
			"return" => "107.11%",
			"asset" => "24381"
		);
$sStringXML = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$sStringXML .= "<list>"."\n";
foreach($axmlData as $value){
	$sStringXML .= "<item>";
	$sStringXML .= "<name>".$value['name']."</name>";
	$sStringXMl .= "<return>".$value['return']."</url>";
	$sStringXML .= "<asset>".$value['asset']."</asset>";
	$sStringXML .= "</item>"."\n";
}
$sStringXML .= "</list>"."\n";
echo '[PHP ruler="true" toolbar="true"]'.htmlentities($sStringXML, ENT_QUOTES, 'UTF-8').'<\/pre>';

xml

[PHP ruler="true" toolbar="true"]<?xml version="1.0" encoding="UTF-8"?> <list> <item><name>楽天日本株4.3倍ブル</name><asset>27625</asset></item> <item><name>小型株ファンド</name><asset>24381</asset></item> </list> <\/pre>

なんか違うな。。

文字列演算子 .=

文字列を「.」で繋げると結合

<?php

$fx = "ドル円";
$fx .= "106.301";

echo $fx;
?>

ドル円106.301

<?php

$rate = array(106.31, 131.908, 84.080);

$fx = "ドル円";
$fx .= $rate&#91;0&#93;;
$fx .= "ユーロ円";
$fx .= $rate&#91;1&#93;;
$fx .= "豪ドル円";
$fx .= $rate&#91;2&#93;;

echo $fx;
?>

ドル円106.31ユーロ円131.908豪ドル円84.08

無名関数とは?

名前付けされずに定義された関数のこと

<?php

$pension = array(
	"こだわり個人年金"=>'1.186',
	"年金かけはし"=>'1.063',
	"たのしみワンダフル"=>'1.081'
);

print_r(array_map(function($a){$pay = 500;return $a*$pay;}, $pension));

Array ( [こだわり個人年金] => 593 [年金かけはし] => 531.5 [たのしみワンダフル] => 540.5 )

array_filter

配列の値に閾値を設けてフィルタリングする。

<?php

$track = array(
	"みずほFG"=> '2.1',
	"三菱UFJ"=> '3.6',
	"ティアック"=> '0',
	"ランド"=> '0',
	"富士通"=> '-1.0',
	"住友化"=> '22',
	"日産自"=> '2.5',
	"アカツキ" => '1.2'
);

$rate = 1;

$filter_func = function ($value) use ($rate) {
	return ($value >= $rate);
};

$result = array_filter($track, $filter_func);

arsort($result);
var_dump($result);

array(5) { [“住友化”]=> string(2) “22” [“三菱UFJ”]=> string(3) “3.6” [“日産自”]=> string(3) “2.5” [“みずほFG”]=> string(3) “2.1” [“アカツキ”]=> string(3) “1.2” }

$rate = 2の時
array(4) { [“住友化”]=> string(2) “22” [“三菱UFJ”]=> string(3) “3.6” [“日産自”]=> string(3) “2.5” [“みずほFG”]=> string(3) “2.1” }

SORT_NUMERIC, SORT_STRING

並び替えを数値としてするか文字列としてするか支持するためのオプションです。

<?php

$track = array(
	"みずほFG"=> '2.1',
	"三菱UFJ"=> '3.6',
	"ティアック"=> '0',
	"ランド"=> '0',
	"富士通"=> '-1.0',
	"住友化"=> '22',
	"日産自"=> '2.5',
	"アカツキ" => '1.2'
);

arsort($track, SORT_NUMERIC);
var_dump($track);

print "<br>";

ksort($track, SORT_STRING);
var_dump($track);

array(8) { [“住友化”]=> string(2) “22” [“三菱UFJ”]=> string(3) “3.6” [“日産自”]=> string(3) “2.5” [“みずほFG”]=> string(3) “2.1” [“アカツキ”]=> string(3) “1.2” [“ランド”]=> string(1) “0” [“ティアック”]=> string(1) “0” [“富士通”]=> string(4) “-1.0” }
array(8) { [“みずほFG”]=> string(3) “2.1” [“アカツキ”]=> string(3) “1.2” [“ティアック”]=> string(1) “0” [“ランド”]=> string(1) “0” [“三菱UFJ”]=> string(3) “3.6” [“住友化”]=> string(2) “22” [“富士通”]=> string(4) “-1.0” [“日産自”]=> string(3) “2.5” }

array_count_values(); 配列の値(value)の数を数える

配列の値の数を数える

<?php

$array = array(
	"投資家1" => "強く買いたい",
	"投資家2" => "売りたい",
	"投資家3" => "強く買いたい",
	"投資家4" => "買いたい",
	"投資家5" => "様子見",
	"投資家6" => "買いたい",
	"投資家7" => "買いたい",
	"投資家8" => "買いたい"
);

$board = array_count_values($array);
arsort($board);

var_dump($board);

array(4) { [“買いたい”]=> int(4) [“強く買いたい”]=> int(2) [“様子見”]=> int(1) [“売りたい”]=> int(1) }

アナリストレポートを形態素分析

では、ベガコーポレーションのレポートを形態素分析してみましょう。ここでは冒頭のみ。

<?php

echo (new MeCab\Tagger())->parse('・ベガコーポレーション(以下、同社)は、家具・インテリア分野でEC を展開
している。自社企画の商品を海外の協力工場で製造し、日本に輸入して
ユーザーに供給するビジネスモデルを有するのが特徴である。また、越
境 EC プラットフォームの運営も手掛けている。');
?>

見やすくします。

<?php

$result = explode("\n", rtrim((new MeCab\Tagger())->parse('・ベガコーポレーション(以下、同社)は、家具・インテリア分野でEC を展開
している。自社企画の商品を海外の協力工場で製造し、日本に輸入して
ユーザーに供給するビジネスモデルを有するのが特徴である。また、越
境 EC プラットフォームの運営も手掛けている。')));

print_r('<pre>');
var_dump($result);
print_r('</pre>');