Category Archives: PHP

Xóa comment trong html, đếm số thẻ tag trong html

// Remove unwanted HTML comments
function remove_html_comments($content = '') {
	return preg_replace('/<!--(.|\s)*?-->/', '', $content);
}
 //get count tag in html
 function getCountTagInHtml($content,$tag) {
    $c = 0;
    if(trim($content)!=""){
       try {
           $dom = new DOMDocument;
           $dom->loadHTML($content);
           $c = $dom->getElementsByTagName($tag)->length;
       } catch (Exception $exc) {
       }
     }
    return $c;
 }

Chức năng tạo file zip

Chạy trên server linux

Cài module zip cho php

  • sudo apt-get install php-zip

hoặc

  • sudo apt-get install php5.6-zip

Nếu server ko có apt-get thì thay apt-get bằng yum

Restart server
sudo service apache2 restart

hoặc

sudo service httpd restart

 

Code php

 

private function zipFile($diffDir, $zipFile) {
$rootPath = realpath($diffDir);
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($rootPath), \RecursiveIteratorIterator::LEAVES_ONLY
);
// Initialize archive object
$zip = new \ZipArchive();
$zip->open($zipFile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
foreach ($files as $name => $file) {
// Skip directories (they would be added automatically)
// if (!$file->isDir()) {
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);

// Add current file to archive
if (!preg_match(‘/\/\.{1,2}$/’, $file)) {
$zip->addFile($filePath, $relativePath);
}
// }
}
// die;
// Zip archive will be created only after closing object
$zip->close();
}

Amazon S3 vs Cakephp

Sử dụng plugin này

https://github.com/robmcvey/cakephp-amazon-s3

Cho phép apache chạy script python (CGI)

Bài hướng dẫn này dựa theo server ubuntu 14.04. Tham khảo.
http://httpd.apache.org/docs/current/howto/cgi.html

Continue Reading

Hay dùng trong cakephp 2

1) Lấy ra lỗi sau khi validate

$this->Admin->set($this->request->data);
if ($this->Admin->validates()) {
} else {
$errors = $this->Admin->validationErrors;
$this->set(‘errors’, $errors);
return;
}

 

Trong view :

<?php if (isset($errors[‘check_email’]) && $errors[‘check_email’]) : ?>
<?= $errors[‘check_email’][0] ?>
<?php endif; ?>

 

Cách 2 :

trong view :

<?php
if ($this->Form->isFieldError(‘check_username’)) {
echo $this->Form->error(‘check_username’);
}
?>

 

2) lệnh log câu truy vấn gần nhất :

$log = $this->ModelName->getDataSource()->getLog(false, false); debug($log);

 

3 ) chuyển mảng thành giá trị:

$t = array(

‘User’ => array(

‘status’ => 1

)

);

$status = Set::extract($t, ‘User.status’);

 

// với mảng nhiều kí tự số , thử dùng $t = Set::extract($t, ‘{n}.cd_bibliotem’);

 

Cách tìm file khai báo 1 class trong php

$reflector = new ReflectionClass(‘SiteManager’);
echo $reflector->getFileName(); die;

Dowload hoặc create file pdf trong cakephp3 sử dụng cakepdf

  • Link doc : https://github.com/FriendsOfCake/CakePdf-
  • Yêu cầu : 
    – PHP 5.4.16+
    – CakePHP 3.0+
    – wkhtmltopdf
  • Cài đặt wkhtmltopdf  : sử dụng Composer
    composer require friendsofcake/cakepdf
  • Thêm code vào file config/bootstrap.php
    // load CakePdf
    Plugin::load(‘CakePdf’, [‘routes’=>true,’bootstrap’ => true]);
    // cấu hình CakePdf (có thể thêm các yeu to khác trong link doc)
    Configure::write(‘CakePdf’, [
    ‘engine’ => [
    ‘className’ => ‘CakePdf.WkHtmlToPdf’,
    // Path trên server và server cần cái đặt wkhtmltopdf
    //’binary’ => ‘/usr/local/bin/wkhtmltopdf’,
    // Path trên window và cần cài thêm wkhtmltopdf.exe về máy tính theo link dưới
    ‘binary’ => ‘C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe’,
    ],
    ]);
  • Thêm code vào file config/routes.php 
    Router::extensions([‘pdf’]); // tạo môi trường pdf
  • Sử dụng : có 2 kiểu sử dụng là
    1 . Render ra view môi trường pdf(có thể set download= true để tự động down,mặc định sẽ là render ra view) 
    – Tạo file PdfsController có :
    public $components = array(‘RequestHandler’);
    public function download($id) {
    // config pdf để download
    $this->viewBuilder()->options([
    ‘pdfConfig’ => [
    ‘orientation’ => ‘portrait’,
    ‘filename’ => ‘filename.pdf’, // file name download
    ‘download’ => true // nếu true sẽ tự động down, false sẽ render ra view
    ]]);
    }
    -Tạo file layout cho pdf  src\Template\Layout\pdf\default.ctp
    -Tạo file view cho pdf     src\Template\Pdfs\pdf\download.ctp
    Cuối cùng chạy link  : /pdfs/download/29.pdf’ // 29 la id
    2. Tạo ra file pdf lưu trên server
    – Tạo file PdfsController có :
    public $components = array(‘RequestHandler’);
    public function createFile() {
    $CakePdf = new \CakePdf\Pdf\CakePdf();
    $CakePdf->template(‘create_file’, ‘default’);//run view pdf/create_file and layout pdf/default
    $CakePdf->viewVars([‘dataPdf’ => 1]);// truyền biến ra view
    // Get the PDF string returned
    $pdf = $CakePdf->output();
    $pdf = $CakePdf->write(WWW_ROOT . ‘files’ . DS . ‘pdf’ . DS . ‘ronaldo.pdf’); // tạo file pdf
    }
    -Tạo file layout cho pdf  src\Template\Layout\pdf\default.ctp
    -Tạo file view cho pdf    src\Template\Pdf\create_file.ctp
    Cuối cùng chạy link  : /pdfs/createFile

Cài đặt font chữ Nhật cho phần tạo file pdf

Khách hàng yêu cầu bạn tạo ra file pdf nhưng lại có chữ tiếng Trung, tiếng Nhật. Sau khi cài các thư viện rồi tạo ra giao diện rất ổn, bạn chợt nhận ra mất chữ.
Continue Reading

Thêm số 0 vào trước với những số có 1 chữ số

str_pad($i, 2, ‘0’, STR_PAD_LEFT);

 

nếu $i là 1 chữ số thì tự thêm 0 , nếu là 2 chữ số thì ko làm gì cả

ví dụ nếu $i là 1  => thì trở thành ’01’

nếu $i là 12 thì vẫn là 12

 

được sử dụng trong trường hợp hiện tháng , ngày ( theo dạng 01 , 02 …. )

 

Tìm ra ngày lớn nhất trong tháng

cal_days_in_month(CAL_GREGORIAN, $month, $year);

 

 

Copyright © 2017. Powered by WordPress & Romangie Theme.