分类
PHP

QueryList 优雅的渐进式PHP采集框架,让采集更简单一点。

How to use?
试试更优雅的采集方式吧!

QueryList不依赖任何框架和架构,它可以单独使用也可以引入到任意的PHP开发框架中去使用,如:Laravel、ThinkPHP;你可以使用它来构建简单的采集系统,也可以用它才构建高可用的分布式采集系统。它提供了丰富的基于CSS选择器的页面抽取API,完全模块化的设计,拥有强大的可扩展性。

分类
WORDPRESS

WordPress使用自带方法生成和验证密码的方法

在WordPress中主要用到两个函数wp_hash_password()和wp_check_password()来对文本进行生成密文和对密文的验证。wp_hash_password() 把一个文本生成加密密文。

  1. function wp_hash_password($password) {
  2.     global $wp_hasher;
  3.     if ( emptyempty($wp_hasher) ) {
  4.         require_once( ABSPATH . WPINC . ‘/class-phpass.php’);
  5.         // By default, use the portable hash from phpass
  6.         $wp_hasher = new PasswordHash(8, true);
  7.     }
  8.     return $wp_hasher->HashPassword( trim( $password ) );
  9. }

wp_check_password() 通过把生成的密文和文本密码进行比对来验证密码。

  1. function wp_check_password($password$hash$user_id = ) {
  2.     global $wp_hasher;
  3.     if ( emptyempty($wp_hasher) ) {
  4.         require_once( ABSPATH . WPINC . ‘/class-phpass.php’);
  5.         // By default, use the portable hash from phpass
  6.         $wp_hasher = new PasswordHash(8, true);
  7.     }
  8.     $check = $wp_hasher->CheckPassword($password$hash);
  9.     return apply_filters( ‘check_password’, $check$password$hash$user_id );
  10. }

简易的使用方法

  1. //生成加密密文
  2. $password = wp_hash_password(“qcqx”);
  3. //把密文和文本验证
  4. echo wp_check_password(“qcqx”,$password ) ;
  5. //输出 1,对比成功
分类
WORDPRESS

百度收录提示


function d4v($url){
$url='http://www.baidu.com/s?wd='.$url;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$rs=curl_exec($curl);
curl_close($curl);
if(!strpos($rs,'没有找到')){
return 1;
}else{
return 0;
}
}


add_filter( 'the_content', 'baidu_submit' );
function baidu_submit( $content ) {
if( is_single() && current_user_can( 'manage_options') )
if(d4v(get_permalink()) == 1)
$content="\<\p align=right>百度已收录(仅管理员可见)".$content;
else
$content="\<\p align=right>百度未收录!点击此处提交(仅管理员可见)".$content;
return $content;
}

分类
WORDPRESS

WordPress原生动态裁剪图像

由于WordPress会自动生成多种尺寸的图像,对服务器空间占用浪费。有多个版本可以动态调整图像尺寸。
有几个脚本来调整在运行诸如Aqua Resizer, vt_resizer, script by Konstantin Kovshenin, Dynamic Image Resizer。他们很棒,工作得很好。
但对我来说似乎很重要。我想要的只是一个脚本,它调整了一个由附件ID(而不是URL)传递的图像,下面贴上代码。


function rw_image_resize( $attachment_id, $width, $height, $crop = true )
{
$path = get_attached_file( $attachment_id );
if ( ! file_exists( $path ) )
{
return false;
}
$upload = wp_upload_dir();
$path_info = pathinfo( $path );
$base_url = $upload['baseurl'] . str_replace( $upload['basedir'], '', $path_info['dirname'] );
$meta = wp_get_attachment_metadata( $attachment_id );
foreach ( $meta['sizes'] as $key => $size )
{
if ( $size['width'] == $width && $size['height'] == $height )
{
return "{$base_url}/{$size['file']}";
}
}
// Generate new size
$resized = image_make_intermediate_size( $path, $width, $height, $crop );
if ( $resized && ! is_wp_error( $resized ) )
{
// Let metadata know about our new size.
$key = sprintf( 'resized-%dx%d', $width, $height );
$meta['sizes'][$key] = $resized;
wp_update_attachment_metadata( $attachment_id, $meta );
return "{$base_url}/{$resized['file']}";
}
// Return original if fails
return "{$base_url}/{$path_info['basename']}";
}

分类
WORDPRESS

根据不同设备访问不同的主题

项目简介:MPChain 致力于打造一个由开发者、用户、广告主、内容生产者及投资人共享
权益的区块链移动广告经济体。项目简介:MPChain 致力于打造一个由开发者、用户、广告主、内容生产者及投资人共享
权益的区块链移动广告经济体。项目简介:MPChain 致力于打造一个由开发者、用户、广告主、内容生产者及投资人共享
权益的区块链移动广告经济体。项目简介:MPChain 致力于打造一个由开发者、用户、广告主、内容生产者及投资人共享
权益的区块链移动广告经济体。

根据访问设备切换 WordPress 主题

function haguo_switch_theme($theme){
global $is_IE;
if($is_IE){
preg_match('/MSIE\s(\d)\.0;/', $_SERVER['HTTP_USER_AGENT'], $matches);
$IEversion = $matches[1];
}
if(wp_is_mobile()) {
$theme='twentytwelve';
}
if(is_weixin()) {
$theme='seventeen';
}
return $theme;
}
add_filter( 'template', 'haguo_switch_theme' );
add_filter( 'stylesheet', 'haguo_switch_theme' );

分类
PHP

PHP array to CSV Function


function convert_to_csv($input_array, $output_file_name, $delimiter){
$temp_memory = fopen('php://memory', 'w');
// loop through the array
foreach ($input_array as $line) {
// use the default csv handler
fputcsv($temp_memory, $line, $delimiter);
}fseek($temp_memory, 0);
// modify the header to be CSV format
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="' . $output_file_name . '";');
// output the file to be downloaded
fpassthru($temp_memory);
}
convert_to_csv($array_of_data, 'data_as_csv.csv', ',');