グローバルスコープとローカルスコープ

globalでロカールスコープの変数をグローバルでも使えるようにします。

<?php

function sell($name){
	$code = "8411";
	echo $name."さんは" .$code."を空売りしています。";

}

sell('Barclays Bank');
echo $code. "は、出来高の多い銘柄です。"
?>

Barclays Bankさんは8411を空売りしています。は、出来高の多い銘柄です。

globalで宣言します。

<?php

function sell($name){
	global $code;
	$code = "8411";
	echo $name."さんは" .$code."を空売りしています。";

}

sell('Barclays Bank');
echo $code. "は、出来高の多い銘柄です。"
?>

Barclays Bankさんは8411を空売りしています。8411は、出来高の多い銘柄です。

多次元配列の定義

下層をつくるには、更にarray()でくくってあげればOKですね。

<?php

$stock= array(
	'0' => array
			(
				'code' => '4578',
				'name' => 'ラクオリア創薬',
				'price' => '5550',
				'pts' => array
						(
						 'pprice' => '5550',
						 'volume' => '100',
						)

			),
	'1' => array
			(
				'code' => '3825',
				'name' => 'リミックスポイント',
				'price' => '892',
				'pts' => array
						(
						'pprice' => '911',
						'volume' => '40400'
						)
			)

	);

var_dump($stock);
?>

array(2) { [0]=> array(4) { [“code”]=> string(4) “4578” [“name”]=> string(21) “ラクオリア創薬” [“price”]=> string(4) “5550” [“pts”]=> array(2) { [“pprice”]=> string(4) “5550” [“volume”]=> string(3) “100” } } [1]=> array(4) { [“code”]=> string(4) “3825” [“name”]=> string(27) “リミックスポイント” [“price”]=> string(3) “892” [“pts”]=> array(2) { [“pprice”]=> string(3) “911” [“volume”]=> string(5) “40400” } } }

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

紛らわしい。

simplexml_load_stringの使い方 2

<h3>xml</h3>
<?php

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

	$sStringXML .= "<shisan>".$value['asset']."</shisan>";
	$sStringXML .= "</item>"."\n";
}
$sStringXML .= "</list>"."\n";
echo '[PHP ruler="true" toolbar="true"]'.htmlentities($sStringXML, ENT_QUOTES, 'UTF-8').'<\/pre>';
echo "<br>";
$xml = simplexml_load_string($sStringXML);

foreach($xml->item as $value){
	$name = $value->toshin;
	$return = $value->return;
	$asset = $value->shisan;

	echo 'name:'.$name.'<br/>';
	echo 'return:'.$return.'<br/>';
	echo 'asset:'.$asset.'<br>';
}
?>

name:楽天日本株4.3倍ブル
return:123.54
asset:27625
name:小型株ファンド
return:107.11
asset:24381

つまり、下記のxml:return, toshin, shisanを切り取ってくれるということですね。

<?xml version="1.0" encoding="UTF-8"?> <list> <item><return>123.54</return><toshin>楽天日本株4.3倍ブル</toshin><shisan>27625</shisan></item> <item><return>107.11</return><toshin>小型株ファンド</toshin><shisan>24381</shisan></item> </list>

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

ebay api 2 finding item by keywords

<?php

error_reporting(E_ALL);

$endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1';
$query = 'harry potter';

$filterarray =
	array(
		array(
			'name' => 'MaxPrice',
			'value' => '25',
			'paramName' => 'Currency',
			'paramValue' => 'USD'),
		array(
			'name'=> 'FreeShippingOnly',
			'value'=>'true',
			'paramName'=>'',
			'paramValue'=>''),
		array(
			'name'=>'ListingType',
			'value' => array('AuctionWithBIN','FixedPrice','StoreInventory'),
			'paramName' => '',
			'paramValue' => ''),
	);

function buildXMLFilter ($filterarray){
	global $xmlfilter;

	foreach ($filterarray as $itemfilter){
		$xmlfilter .= "<itemFilter>\n";

		foreach($itemfilter as $key => $value){
			if(is_array($value)){
				foreach($value as $arrayval){
					$xmlfilter .= " <$key>$arrayval</key>\n";
				}
			}
			else {
				if($value != ""){
					$xmlfilter .= " <$key>$value</$key>\n";
				}
			}
		}
		$xmlfilter .= "</itemFilter>\n";
	}
	return "$xmlfilter";
}

buildXMLFilter($filterarray);

$resp = simplexml_load_string(constructPostCallAndGetResponse($endpoint, $query, $xmlfilter));

if ($resp->ack == "Success"){
	$result = '';

	foreach($resp->searchResult->item as $item){
		$pic = $item->gallaryURL;
		$link = $item->viewItemURL;
		$title = $item->title;

		$results .= "<tr><td><img src=\"$pic\"></td><td><a href=\"$link\">$title</a></td></tr>";
	}
} else {
	$results = "<h3>Ops! The request was not successful. Make sure you are using a vlid ";
	$results .= "AppId for the Production environment.</h3>";
}

?>

<html>
<head>
<title>search result for <?php echo $query; ?></title>
<style type="text/css">
body {
	font-family:arial,sans-serif;
}
</style>
</head>
<body>
<h1>ebay search results for <?php echo $query; ?></h1>

<table>
	<tr>
	<td>
		<?php echo $results;?>
	</td>
	</tr>
</table>

</body>
</html>

<?php

function constructPostCallAndGetResponse($endpoint, $query, $xmlfilter){
	global $xmlrequest;

	$xmlrequest  = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
	$xmlrequest .= "<findItemsByKeywordsRequest xmlns=\"http:://www.ebay.com/marketplace/search/v1/services\">\n";
	$xmlrequest .= "<keywords>";
	$xmlrequest .= $query;
	$xmlrequest .= "</keywords>\n";
	$xmlrequest .= $xmlfilter;
	$xmlrequest .= "<paginationInput>\n <entriesPerPage>3</entriesPerPage>\n</paginationInput>\n";
	$xmlrequest .= "</findItemsByKeywordsRequest>";

	$headers = array(
		'X-EBAY-SOA-OPERATION-NAME: findItemsByKeywords',
		'X-EBAY-SOA-SERVICE-VERSION: 1.3.0',
		'X-EBAY-SOA-REQUEST-DATA-FORMAT: XML',
		'X-EBAY-SOA-GLOBAL-ID: EBAY-US',
		'X-EBAY-SOA-SECURITY-APPNAME: ',
		'Content-Type: text/xml;charset=utf-8',
	);

	$session = curl_init($endpoint);
	curl_setopt($session, CURLOPT_POST, true);
	curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($session, CURLOPT_POSTFIELDS, $xmlrequest);
	curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

	$responsexml = curl_exec($session);
	curl_close($session);
	return $responsexml;

}

?>

ebay search results for harry potter
Ops! The request was not successful. Make sure you are using a vlid AppId for the Production environment.

上手くいかない。。。
期待値は下記のようなインターフェイス