php特殊字符过滤
1、过滤标签(HTML):strip_tags()
例如:
<?php
$text = '<?php ?><p>Test paragraph.</p><!-- Comment -
-> <a href=http://topic.csdn.net/u/20090311/09/"#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";
// 允许使用<p>和<a>
echo strip_tags($text, '<p><a>');
?>
2、转义mysql特殊字符:mysql_real_escape_string()
3、引号转义:addslashes()
4、转义HTML:htmlspecialchars() ......
原文出自: http://www.hly1980.cn/archives/118.html
需要分析日志时tail命令可是常需要用到的,可惜php内并没有提供类似的方法,所以自己实现了一个。
调用方式为tail($filename, $rows),每次默认读取1024字节作为缓冲,返回字符串数组,文件尾的行靠前(这里的行为和tail有所区别,如果需要以原序返回的请自行调用array_reverse)。
代码如下:
/**
* 读取文件最后若干行的数据
*
* @param string $filename
* 文件名
* @param string $rows
* 行数
* @param string $size
* 内存缓冲区大小,默认为1024字节
* @param string $ending
* 行尾分隔符,默认为\n
* @return array
* 读取成功则返回字符串数组,文件尾的字符串靠前,读取失败则返回false
*/
function tail($filename, $rows, $size = 1024, $ending = "\n") {
$ret = false;
if ($rows > 0 && $fp = fopen($filename, 'rb')) {
$pos = filesize($filename);
$ret = array();
flock($fp, LOCK_SH);
$data = '';
$found = 0;
while ($found < $rows) {
......
当我们用WINDOWS搜索某包含某文字的文件时,可以在“包含文字”处填上搜索词。但是一些不常见的后缀名文件WINDOWS不会搜索,如:,.log、.dll、.js、.asp、.xml、.xsl、.hta、.css、.wsh、.cpp、.c 或 .h等及无后缀名的文件。对于我等程序爱好者来说实在太不方便了,虽然有“文本替换大师”等软件能做这工作,但有时还是直接用WIN方便。
解决办法是,修改注册表:
打到如下子键:
HKEY_LOCAL_MACHINE \ SYSTEM\CurrentControlSet \ Control\ContentIndex
将 “FilterFilesWithUnknownExtensions”的 DWORD 值设置为 1。
搞定 ......
当我们用WINDOWS搜索某包含某文字的文件时,可以在“包含文字”处填上搜索词。但是一些不常见的后缀名文件WINDOWS不会搜索,如:,.log、.dll、.js、.asp、.xml、.xsl、.hta、.css、.wsh、.cpp、.c 或 .h等及无后缀名的文件。对于我等程序爱好者来说实在太不方便了,虽然有“文本替换大师”等软件能做这工作,但有时还是直接用WIN方便。
解决办法是,修改注册表:
打到如下子键:
HKEY_LOCAL_MACHINE \ SYSTEM\CurrentControlSet \ Control\ContentIndex
将 “FilterFilesWithUnknownExtensions”的 DWORD 值设置为 1。
搞定 ......
(转)问题:
有没有办法在php中实现多线程呢?
假设你正在写一个基于多台服务器的php应用,理想的情况时同时向多台服务器发送请求,而不是一台接一台。
可以实现吗?
回答:
当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如perl。
其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。
假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转。你可能会写下面这样的代码:
$hosts = array("host1.sample.com", "host2.sample.com", "host3.sample.com");
$timeout = 15;
$status = array();
foreach ($hosts as $host) {
$errno = 0;
$errstr = "";
$s = fsockopen($host, 80, $errno, $errstr, $timeout);
if ($s) {
$status[$host] = "Connectedn";
fwrite($s, "HEAD / HTTP/1.0rnHost: $hostrnrn");
do {
$data = fread($s, 8192);
if (strlen($data) == 0) {
break;
}
$status[$host] .= $data;
} while (true);
fclose($s);
} else {
$statu ......
1.取得当前内存使用大小:memory_get_usage()
2.计算执行时间:microtime(true)
3.设置script执行时间限制set_time_limit
4.设置内存限制ini_set("memory_limit","256M");
3.从远程下载文件的两个方法:
$contents=file_get_contents("http://www.govtrack.us/data/us/gis/zip4dist-prefix.txt.gz");
$file = fopen($file_name, "wb");
fwrite($file, $contents);
fclose($file);
$handle = fopen("http://www.govtrack.us/data/us/gis/zip4dist-prefix.txt.gz", "rb");
$file = fopen($file_name, "wb");
$contents = '';
while (!feof($handle)) {
$contents = fread($handle, 8192);
fwrite($file, $contents);
}
fclose($file);
fclose($handle);
......
最近工作中遇到一个头疼的问题:php中调用一个存储过程(要复制N多数据的.),由于此过程执行时间很长.导致php总是超时错误:
Service Temporarily Unavailable
The
server is temporarily unable to service your request due to maintenance downtime
or capacity problems
.
Please
try
again
later
.
问题折腾了好久,一直没找到原因.分别是:
php开头加上: set_time_limit(0);
不管用.
php.ini中设置timeout的时间:
session.cookie_lifetime = 0
session.gc_maxlifetime =
3440
pfpro.defaulttimeout = 3600
max_execution_time =
3600
max_input_time = 3600 ;
还是不管用.
设置mysql的配置文件my.ini:
connect_timeout=3600
wait_timeout=2880000
interactive_timeout
= 2880000
max_allowed_packet = 10M
还是还是不管用.
Apache中设置httpd.conf 超时:
#Timeout:
Sec.
Timeout 360000
#KeepAlive: Off | On
KeepAlive
On
#M ......