PHP」カテゴリーアーカイブ

PHP関連

YoutubeのvideoIDをPHPで抜き出し

$url = 'https://www.youtube.com/watch?v=jlQLTVVHEYs';
$url = 'https://www.youtube.com/watch?v=jlQLTVVHEYs&ebc=ANyPxKp4JwKkDaL66YbSUSgV6U_SO5cg3iAnvhpd4A-ZvuG2KdIaUL5mu1Jq-RJBojeogNcMVvUsJcSz5I-79JMKeFANVHYW9Q';
$url = 'https://youtu.be/jlQLTVVHEYs';
$url = '<iframe width="560" height="315" src="https://www.youtube.com/embed/jlQLTVVHEYs" frameborder="0" allowfullscreen></iframe>';
if(preg_match('/youtube\.com\/embed\/([^"]+)/',$url,$match)){
 $videoId = $match[1]; 
}else if(preg_match('/\?v=([^&]+)/',$url,$match)){
 $videoId = $match[1];
}else if(preg_match('/youtu\.be\/(.*)/',$url,$match)){
 $videoId = $match[1];
}
echo $videoId;
exit;

CakePHPのセッションを捨てて、同じドメインの別システムのセッションを操作

CakePHPの管理系のシステムから、会員系のシステムへのログインなどで利用。

session_destroy(); // セッション破棄
unset($_COOKIE[session_name()]); // セッションID を完全に削除
session_name('PHPSESSID'); // 一般的なセッション名を指定しないシステムだとこの名前かな?
session_start(); // セッション再起動
$_SESSION['hogehoge']['funngaa'] = 'ほげほげふんが';//別システムへサインオンとか

CakePHP日付を日本語にする。(誕生日,未入力の場合,区切り文字にも対応)

いつも忘れるのでメモします。

<dt>生年月日</dt>
<dd>
 <?php
 $params = array(
 'label'=>false,
 'div'=>false,
 'class'=>'birthday',
 'dateFormat' => 'YMD',
 'minYear' => date('Y') - 100,
 'maxYear' => date('Y') - 10,
 'monthNames' => false,
 'separator'=>'',
 'empty'=>'--'
 );
 if(empty($this->data)){
 $params['selected'] = array('year'=>0,'month'=>0,'day'=>0);
 }
 echo $this->Form->input('birthday',$params);
 ?>
</dd>
<script type="text/javascript">
$(function(){
 $('#UserBirthdayYear').after('年');
 $('#UserBirthdayMonth').after('月');
 $('#UserBirthdayDay').after('日');
});
</script>

Twitter API PHPを使って投稿簡単な方法

1)Twitterへアプリケーション登録

おもいっきり省略!!

2)以下の情報を準備

  • Consumer key
  • Consumer secret
  • Access token
  • Access token secret
  • (あと、Access levelを Read & Writeに設定)

3)以下のURL(github)よりライブラリを取得

twitteroauth
https://github.com/abraham/twitteroauth

4)あとは以下の3行でOK

require_once('twitteroauth/twitteroauth.php'); 
$connection = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET', 'ACCESS_TOKEN', 'ACCESS_TOKEN_SECRET');
$connection->post('statuses/update', array('status' => 'text to tweet'));

CakePHP日付のValidateion,preg_matchエラーが表示される。

メモ:HTMLヘルパーのtype=>’date’で作ったセレクトメニューをそのまま Validateionクラスにおくって、rule=>array(‘date’)でチェックしようとするとエラーになったので、オリジナルのチェック関数でバリデーション

class AppModel extends Model {

	public function dateArray($check,$config){

		if(
			is_numeric($check['date']['year']) &&
			is_numeric($check['date']['month']) &&
			is_numeric($check['date']['day'])
		){
			$dateStr = implode('-',$check['date']);
			if(preg_match('/^\d{4}-\d{2}-\d{2}$/',$dateStr)){
				return true;
			}else{
				return false;
			}

		}else{
			return false;
		}

	}
		public function timeArray($fields,$config){
		foreach($fields as $field){
		    if(
				is_numeric($field['hour']) &&
				is_numeric($field['min'])
			){
				$timeStr = implode('-',$field);
				if(!preg_match('/^\d{2}-\d{2}$/',$timeStr)){
					return false;
				}
			}else{
				return false;
			}
		}
		return true;
	}

}

php_mecabをCentOS6にインストールメモ

------------------------------めかぶインストール
$ wget http://mecab.googlecode.com/files/mecab-0.993.tar.gz
$ tar zxvf mecab-0.993.tar.gz
$ cd mecab-0.993
$ sudo ./configure --with-charset=utf8
>>>>>>>>>>>>>>>>>ERR エラーのためgcc関連インストール
$ yum install gcc*
$ sudo ./configure --with-charset=utf8
$ sudo make
$ sudo make install

--------------------------------辞書インストール
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
$ tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ sudo ./configure --with-charset=utf8 --with-mecab-config=/usr/local/bin/mecab-config
$ sudo make
$ sudo make install

--------------------------------TEST
# mecab
競歩よいてんだ
競歩 名詞,一般,*,*,*,*,競歩,キョウホ,キョーホ
よい 形容詞,自立,*,*,形容詞・アウオ段,基本形,よい,ヨイ,ヨイ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
ん 名詞,非自立,一般,*,*,*,ん,ン,ン
だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
EOS

———————————php_mecab
$ sudo pear channel-discover pecl.opendogs.org
$ sudo pear install opendogs/mecab-beta
$ sudo vi /etc/php.ini

CakePHPファーストセットアップのメモ

cakephpファーストセットアップメモ
個人的にいつも設定することを備忘がてらにまとめておく。

■timezone設定

/Config/core.php

date_default_timezone_set('Asia/Tokyo');

■オリジナルの設定

/Config/bootstrap.php
最後の行に自分の設定ファイルの読込を追記

/**
* original settings
*/
config('original_settings');

実際のファイル置く場所は/Config/original_setting.php

■Databaseの設定

/Config/database.php
ローカル、サーバの切り替えをかいとく、最後の方のDATABASE_CONFIGクラスを書き換え本サーバ側の設定は分からないことが多い。

class DATABASE_CONFIG {
	public $default = array();
	public $production = array();
	public $development = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => '',
		'password' => '',
		'database' => '',
		'prefix' => '',
		'encoding' => 'utf8',
	);
	public function __construct(){
		if($this->isLocal()) {
			$this->default = $this->development;
		} else {
			$this->default = $this->production;
		}
	}
	private function isLocal(){
		if(
			$_SERVER['SERVER_NAME'] == '127.0.0.1' ||
			$_SERVER['SERVER_NAME'] == 'localhost' ||
			preg_match('/192\.168\./',$_SERVER['SERVER_NAME'])
		){
			return true;
		}else{
			return false;
		}
	}
}

■Bakeとか(MAMPつかってるばあい)

なんか普通の説明だとうまくいかず。以下のとおりするとうまく行った
※macOSとMAMP組み合わせ
//ソケットファイルのリンクつくる

 sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

//phpコマンドに渡す(MAMPのPHPだけしか入ってないとフルパス必要かも)

 php ./cake.php bake