注册 登陆
浏览模式: 标准 | 列表 分类: PHP

PHP 获取根域名

 function getUrlRoot($url){

        #添加头部和尾巴
        $url = $url . "/";
        #判断域名
        preg_match("/((\w*):\/\/)?\w*\.?([\w|-]*\.(com.cn|net.cn|gov.cn|org.cn|com|net|cn|org|asia|tel|mobi|me|tv|biz|cc|name|info))
\//", $url, $ohurl);
        #判断IP
        if($ohurl[3] == ''){
                preg_match("/((\d+\.){3}\d+)\//", $url, $ohip);
                return $ohip[1];
        }
        return $ohurl[3];
}

PHP socket 网络编程实例[转]

SERVER端

<?php
//确保在连接客户端时不会超时
set_time_limit(0);

//设置IP和端口号
$address='127.0.0.1';
$port=2009;    //调试的时候,可以多换端口来测试程序!

//创建一个SOCKET
if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0)
{
echo "socket_create() 失败的原因是:".socket_strerror($sock)."<br>";
}

//绑定到socket端口
if(($ret=socket_bind($sock,$address,$port))<0)
{
echo "socket_bind() 失败的原因是:".socket_strerror($ret)."<br>";
}

//开始监听
if(($ret=socket_listen($sock,4))<0)
{
echo "socket_listen() 失败的原因是:".socket_strerror($ret)."<br>";
}

do {
if (($msgsock = socket_accept($sock)) < 0)
{
echo "socket_accept() failed: reason: " . socket_strerror($msgsock. "\n";
break;
}

//发到客户端
$msg ="<font color=red>欢迎进入服务器!</font><br>";
socket_write($msgsock, $msg, strlen($msg));

echo "读取客户端发来的信息<br>";
$buf = socket_read($msgsock,8192);


$talkback = "收到的信息:$buf<br>";
echo $talkback;
/* if(socket_write($msgsock, $talkback, strlen($talkback))<0)
     {
      echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "\n";
     }
     else
     {
      echo "发送成功";
     }*/


//echo $buf;
socket_close($msgsock);
} while (true);

socket_close($sock);
?>




CLIENT端


<?php
error_reporting(E_ALL);
set_time_limit(0);
echo "<h2>TCP/IP Connection</h2>\n";

$service_port = 2009;
$address = "127.0.0.1";


$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0)
{
echo "socket_create() failed: reason: " . socket_strerror($socket. "\n";
}
else
{
echo "OK.\n";
}

echo "试图连接 '$address' 端口 '$service_port'...<br>";
$result = socket_connect($socket, $address, $service_port);
if ($result < 0)
{
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result. "\n";
}
else
{
echo "连接OK<br>";
}

$in = "Hello\r\n";
$in .= "我是Chester\r\n";
$out = '';
$out1='';


if(!socket_write($socket, $in, strlen($in)))
{
echo "socket_write() failed: reason: " . socket_strerror($socket. "\n";
}
else
{
echo "发送到服务器信息成功!<br>";
echo "发送的内容为:<font color='red'>$in</font> <br>";
}

while($out = socket_read($socket, 8192))
{
echo "接收服务器回传信息成功!<br>";
echo "接受的内容为:",$out;
}


echo "关闭SOCKET...<br>";
socket_close($socket);
echo "关闭OK<br>";
?>
先运行server.php
 

图片附件:
25d6f307b41e715c030881f7.jpg

大小: 36.03 K
尺寸: 331 x 92
浏览: 101017 次
点击打开新窗口浏览全图

图片附件:
2.jpg

大小: 94.69 K
尺寸: 115 x 92
浏览: 5810 次
点击打开新窗口浏览全图

eclipse 启动参数

想要eclipse 速度快那这个文章必看。。

» 阅读全文

PHP 中执行排序与 MySQL 中排序

肥嘟嘟介绍的一篇关于排序问题的文章:)

Q:列出在 PHP 中执行排序要优于在 MYSQL 中排序的原因?给一些必须在MYSQL中排序的实例?

列出一些 PHP 中执行排序更优的情况……

列出一些必须在 MYSQL 中排序的实例……

» 阅读全文

php保留小数点

$n=round(1.95583, 2);
这是四舍五入法保留2位小数

将数组写入txt文件 var_export

var_export($times,true);后面不加true不能写入文件哟

  1. $fp = fopen('aa.txt','w+'); 
  2. fwrite($fp,var_export($times,true)); 
  3. fclose($fp); 

 

跟我用OFC的PHP类库——x_axis_labels


设置x_axis_labels标签稍微有些复杂,之前介绍过x_axis对象有提供过set_labels_from_array方法,是创建对象方式标签,格式:
        set_labels_from_array( $a ) //参数是一个数组定义
注意上面方法是x_axis对象的方法,别搞错!

OFC提供更进一步的设置x轴标签显示的参数,就是x_axis_labels

对象:x_axis_labels
方法:

  • set_setps ( $steps )
    设置每隔N(步阶)个数显示标签
  • set_labels ( $labels )
    设置标签数组
  • set_colour ( $colour )
    设置标签颜色,十六进制
  • set_size ( $size )
    标签文字大小
  • set_vertical()
    所有标签垂直显示


事例代码:
 

 
  1. <?php   
  2. //引用OFC类库   
  3. include 'libs\php-ofc-library\open-flash-chart.php';   
  4. //创建标题对象并设置标题名和样式   
  5. $title = new title();   
  6. $title->text = "0758jian";   
  7. $title->set_style("font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;");   
  8.   
  9. //创建line_dot对象,日后再讲解,写上去是方便查看x轴   
  10. $line_dot = new line_dot();   
  11. $line_dot->set_values( array(9,8,7,6,5,4,3,2,1) );   
  12.   
  13. //创建x轴对象   
  14. $x = new x_axis();   
  15. $x->set_colour( '#D7E4A3' ); //x轴线颜色   
  16. $x->set_grid_colour( '#A2ACBA' ); //单元格边颜色(也就是竖线)   
  17.   
  18. //创建x_axis_labels对象   
  19. $x_labels = new x_axis_labels();   
  20. $x_labels->set_steps( 2 ); //设置每隔N(步阶)个数显示标签   
  21. //设置标签数组(注与x_axis的set_labels是一样的只不过JSON以数组或者对象表示)   
  22. $x_labels->set_labels(   
  23.     array'one','two','three','four','five','six','seven','eight','nine' )   
  24.     );   
  25. $x_labels->set_colour( '#CF4D5F' ); //设置标签颜色,十六进制   
  26. $x_labels->set_size( 16 ); //标签文字大小   
  27. $x_labels->set_vertical(); //设置标签为垂直方向   
  28.   
  29. //把x_labels对象的内容转给x_axis对象   
  30. $x->set_labels( $x_labels);   
  31.   
  32. //创建OFC对象并应用标题和输出JSON格式   
  33. $chart = new open_flash_chart();   
  34. $chart->set_title($title);   
  35. $chart->set_x_axis($x); //调用设置set_x_axis方法   
  36. $chart->add_element( $line_dot );   
  37. echo $chart->toString();   
  38. ?>  

效果演示:

 


点击查看PHP输出的格式

更为细节的设置x轴标签对象x_axis_label,注意和上面所说的x_axis_labels就一个s区别
对象:x_axis_label($text, $colour, $size, $rotate)
参数依次是标签名、标签颜色、标签大小、旋转方式("vertical" "diaganol" or "horizontal" )

方法:

  • set_text( $text )
    设置标签名
  • set_colour( $colour )
    标签颜色
  • set_size( $size )
    标签大小
  • set_rotate( $rotate )
    旋转角度
  • set_vertical()
    设置垂直方式
  • set_visible()
    设置可视


事例代码:

 
  1. <?php   
  2. //引用OFC类库   
  3. include 'libs\php-ofc-library\open-flash-chart.php';   
  4. //创建标题对象并设置标题名和样式   
  5. $title = new title();   
  6. $title->text = "0758jian";   
  7. $title->set_style("font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;");   
  8.   
  9. //创建line_dot对象,日后再讲解,写上去是方便查看x轴   
  10. $line_dot = new line_dot();   
  11. $line_dot->set_values( array(9,8,7,6,5,4,3,2,1) );   
  12.   
  13. //创建x轴对象   
  14. $x = new x_axis();   
  15. $x->set_colour( '#D7E4A3' ); //x轴线颜色   
  16. $x->set_grid_colour( '#A2ACBA' ); //单元格边颜色(也就是竖线)   
  17. $x->set_steps( 1 );   
  18.   
  19. //创建x_axis_labels对象   
  20. $x_labels = new x_axis_labels();   
  21. $x_labels->set_steps( 2 ); //设置每隔N(步阶)个数显示标签   
  22. $x_labels->set_colour( '#CF4D5F' ); //设置标签颜色,十六进制   
  23. $x_labels->set_size( 16 ); //标签文字大小   
  24. $x_labels->set_vertical(); //设置标签为垂直方向   
  25.   
  26. $tmp = array();   
  27. $tmp[] = '2008-03';   
  28. $tmp[] = '2008-04';   
  29. $tmp[] = '2008-05';   
  30. $tmp[] = '2008-06';   
  31. $tmp[] =  new x_axis_label('2008-07''#CF4D5F', 16, 315);   
  32.   
  33. $tmp[] = new x_axis_label('2008-08''#0000FF', 20, 'vertical');   
  34. $tmp[] = new x_axis_label('2008-09''#0000FF', 30, 'vertical');   
  35. $eight = new x_axis_label('2008-10''#00FF00', 16, 'diagonal'); //注意这里原本是不可视的   
  36. $eight->set_visible(); //这里强迫设置可视   
  37. $tmp[] = $eight;   
  38. $tmp[] = new x_axis_label('2008-11''#FF00FF', 16, 'horizontal');   
  39. $ten = new x_axis_label(null,null,null,null);   
  40. $ten->set_text( '2008-12' );   
  41. $ten->set_colour('#999900');   
  42. $ten->set_size(12);   
  43. $ten->set_rotate( 315 );   
  44. //$ten->set_vertical();   
  45. $ten->set_visible();   
  46.   
  47. $tmp[] = $ten;   
  48.   
  49. //把$tmp数组传给x_axis_labels对象   
  50. $x_labels->set_labels( $tmp );   
  51.   
  52. //把x_labels对象的内容转给x_axis对象   
  53. $x->set_labels( $x_labels);   
  54.   
  55. //创建OFC对象并应用标题和输出JSON格式   
  56. $chart = new open_flash_chart();   
  57. $chart->set_title($title);   
  58. $chart->set_x_axis($x); //调用设置set_x_axis方法   
  59. $chart->add_element( $line_dot );   
  60. echo $chart->toString();   
  61. ?>   


效果演示:

 


点击查看PHP输出的格式

 

转自http://www.51toria.cn/article.asp?id=137

跟我用OFC的PHP类库——y_axis



对象:y_axis

  • set_stroke( $s )
    y轴线宽度
  • set_tick_length( $val )
    y轴刻度长度
  • set_colours( $colour, $grid_colour )
    y轴线颜色与单元格颜色(即横线)
  • set_colour( $colour )
    y轴线颜色
  • set_grid_colour( $colour )
    单元格颜色(即横线)
  • set_range( $min, $max, $steps=1 )
    刻度范围值,参数分别是最小值、最大值和步阶
  • set_offset( $off )
    如果是真值,就y轴从一小部分距离开始
  • set_labels( $labels )
    设置y轴标签名,这会取代set_range的方法
  • set_steps( $steps )
    设置步阶


事例代码:
 

 
  1. <?php   
  2. //引用OFC类库   
  3. include 'libs\php-ofc-library\open-flash-chart.php';   
  4. //创建标题对象并设置标题名和样式   
  5. $title = new title();   
  6. $title->text = "0758jian";   
  7. $title->set_style("font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;");   
  8.   
  9. //创建y轴对象   
  10. $y = new y_axis();    
  11. $y->set_stroke( 10 ); //y轴线宽度   
  12. $y->set_tick_length( 20 ); //y轴刻度长度   
  13. $y->set_colours( '#D7E4A3''#A2ACBA'); //y轴线颜色与单元格颜色(即横线)   
  14. //$y->set_colour( '#D7E4A3' ); //y轴线颜色   
  15. //$y->set_grid_colour( '#A2ACBA' ); //单元格颜色(即横线)   
  16. //$y->set_range( 0, 9, 1 ); //刻度范围值,参数分别是最小值、最大值和步阶   
  17. $y->set_offset(true); //如果是真值,就y轴从一小部分距离开始   
  18. $y->set_labels( array('Zero','One','Two','Three','Four','Five','Six','Seven','Eight') ); //设置y轴标签名   
  19. $y->set_steps( 1 ); //设置步阶   
  20.   
  21. //创建OFC对象并应用标题和输出JSON格式   
  22. $chart = new open_flash_chart();   
  23. $chart->set_title($title);   
  24. $chart->set_y_axis($y); //调用设置set_y_axis方法   
  25. echo $chart->toString();   
  26. ?>  

注意:y_axis默认位置是在左边,想设置在右边就要用与它有相同方法的另一个对象是y_axis_right,它们的方法一致!还有注意一些方法的重合性

效果演示:


正负y轴:
 


右边y轴:
 


点击查看PHP输出的格式
点击查看Y轴正负值格式
点击查看Y轴右边格式

转自http://www.51toria.cn/article.asp?id=134

php 给不足的前面加0

str_pad($i,2,'0',STR_PAD_LEFT)

查找是否包含字符串

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
   echo "The string '$findme' was not found in the string '$mystring'";
} else {
   echo "The string '$findme' was found in the string '$mystring'";
   echo " and exists at position $pos";
}

// We can search for the character, ignoring anything before the offset
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, not 0
?>