php过滤字符串内容的

 更新时间:2016年11月25日 17:32  点击:1950

下面举了二个实现来告诉你如何过滤重复的内容,有需要的朋友可以参考

 

foreach($arr as $value){
   if(!empty($value)){
     $strs=strstr($value,"新闻");
   }
}

输出:新闻 新闻

直接用array_unique 函数就可以了。

 

$string= '数组aabbccdd';
function str_split_utf8($str) {
$split=1;
$array = array();
for ( $i=0; $i < strlen( $str ); ){
$value = ord($str[$i]);
if($value > 127){
if($value >= 192 && $value <= 223)
$split=2;
elseif($value >= 224 && $value <= 239)
$split=3;
elseif($value >= 240 && $value <= 247)
$split=4;
}else{
$split=1;
}
$key = NULL;
for ( $j = 0; $j < $split; $j++, $i++ ) {
$key .= $str[$i];
}
array_push( $array, $key );
}
return $array;
}
print_r(array_unique(str_split_utf8($string)));


这里有篇参考文章

php教程er/21/899e11a21ae817a97d3ce64f851ab9f6.htm">http://www.111cn.net/phper/21/899e11a21ae817a97d3ce64f851ab9f6.htm

里面有各种大家开发中常用到的种编码如uft8->gbk gbk转utf8 繁体转简体 简体转繁体 utf8转unicode gbk转拼音 Ascii转拼音 等

里面有各种大家开发中常用到的种编码如uft8->gbk  gbk转utf8 繁体转简体  简体转繁体 utf8转unicode  gbk转拼音 Ascii转拼音 等

<?php教程
/**
 * utf8转gbk
 * @param $utfstr
 */
function utf8_to_gbk($utfstr) {
 global $UC2GBTABLE;
 $okstr = '';
 if(empty($UC2GBTABLE)) {
  $filename = CODETABLEDIR.'gb-unicode.table';
  $fp = fopen($filename, 'rb');
  while($l = fgets($fp,15)) {       
   $UC2GBTABLE[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));
  }
  fclose($fp);
 }
 $okstr = '';
 $ulen = strlen($utfstr);
 for($i=0; $i<$ulen; $i++) {
  $c = $utfstr[$i];
  $cb = decbin(ord($utfstr[$i]));
  if(strlen($cb)==8) {
   $csize = strpos(decbin(ord($cb)),'0');
   for($j = 0; $j < $csize; $j++) {
    $i++;
    $c .= $utfstr[$i];
   }
   $c = utf8_to_unicode($c);
   if(isset($UC2GBTABLE[$c])) {
    $c = dechex($UC2GBTABLE[$c]+0x8080);
    $okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));
   } else {
    $okstr .= '&#'.$c.';';
   }
  } else {
   $okstr .= $c;
  }
 }
 $okstr = trim($okstr);
 return $okstr;
}
/**
 * gbk转utf8
 * @param $gbstr
 */
function gbk_to_utf8($gbstr) {
 global $CODETABLE;
 if(empty($CODETABLE)) {
  $filename = CODETABLEDIR.'gb-unicode.table';
  $fp = fopen($filename, 'rb');
  while($l = fgets($fp,15)) {
   $CODETABLE[hexdec(substr($l, 0, 6))] = substr($l, 7, 6);
  }
  fclose($fp);
 }
 $ret = '';
 $utf8 = '';
 while($gbstr) {
  if(ord(substr($gbstr, 0, 1)) > 0x80) {
   $thisW = substr($gbstr, 0, 2);
   $gbstr = substr($gbstr, 2, strlen($gbstr));
   $utf8 = '';
   @$utf8 = unicode_to_utf8(hexdec($CODETABLE[hexdec(bin2hex($thisW)) - 0x8080]));
   if($utf8 != '') {
    for($i = 0; $i < strlen($utf8); $i += 3) $ret .= chr(substr($utf8, $i, 3));
   }
  } else {
   $ret .= substr($gbstr, 0, 1);
   $gbstr = substr($gbstr, 1, strlen($gbstr));
  }
 }
 return $ret;
}
/**
 * 繁体转简体
 * @param  $Text
 */
function big5_to_gbk($Text) {
 global $BIG5_DATA;
 if(empty($BIG5_DATA)) {
  $filename = CODETABLEDIR.'big5-gb.table';
  $fp = fopen($filename, 'rb');
  $BIG5_DATA = fread($fp, filesize($filename));
  fclose($fp);
 }
 $max = strlen($Text)-1;
 for($i = 0; $i < $max; $i++) {
  $h = ord($Text[$i]);
  if($h >= 0x80) {
   $l = ord($Text[$i+1]);
   if($h==161 && $l==64) {
    $gbstr = ' ';
   } else {
    $p = ($h-160)*510+($l-1)*2;
    $gbstr = $BIG5_DATA[$p].$BIG5_DATA[$p+1];
   }
   $Text[$i] = $gbstr[0];
   $Text[$i+1] = $gbstr[1];
   $i++;
  }
 }
 return $Text;
}
/**
 * 简体转繁体
 * @param  $Text
 */
function gbk_to_big5($Text) {
 global $GB_DATA;
 if(empty($GB_DATA)) {
  $filename = CODETABLEDIR.'gb-big5.table';
  $fp = fopen($filename, 'rb');
  $gb = fread($fp, filesize($filename));
  fclose($fp);
 }
 $max = strlen($Text)-1;
 for($i = 0; $i < $max; $i++) {
  $h = ord($Text[$i]);
  if($h >= 0x80) {
   $l = ord($Text[$i+1]);
   if($h==161 && $l==64) {
    $big = ' ';
   } else {
    $p = ($h-160)*510+($l-1)*2;
    $big = $GB_DATA[$p].$GB_DATA[$p+1];
   }
   $Text[$i] = $big[0];
   $Text[$i+1] = $big[1];
   $i++;
  }
 }
 return $Text;
}
/**
 * unicode转utf8
 * @param  $c
 */
function unicode_to_utf8($c) {
 $str = '';
 if($c < 0x80) {
  $str .= $c;
 } elseif($c < 0x800) {
  $str .= (0xC0 | $c >> 6);
  $str .= (0x80 | $c & 0x3F);
 } elseif($c < 0x10000) {
  $str .= (0xE0 | $c >> 12);
  $str .= (0x80 | $c >> 6 & 0x3F);
  $str .= (0x80 | $c & 0x3F);
 } elseif($c < 0x200000) {
  $str .= (0xF0 | $c >> 18);
  $str .= (0x80 | $c >> 12 & 0x3F);
  $str .= (0x80 | $c >> 6 & 0x3F);
  $str .= (0x80 | $c & 0x3F);
 }
 return $str;
}
/**
 * utf8转unicode
 * @param  $c
 */
function utf8_to_unicode($c) {
 switch(strlen($c)) {
  case 1:
    return ord($c);
  case 2:
    $n = (ord($c[0]) & 0x3f) << 6;
    $n += ord($c[1]) & 0x3f;
    return $n;
  case 3:
    $n = (ord($c[0]) & 0x1f) << 12;
    $n += (ord($c[1]) & 0x3f) << 6;
    $n += ord($c[2]) & 0x3f;
    return $n;
  case 4:
    $n = (ord($c[0]) & 0x0f) << 18;
    $n += (ord($c[1]) & 0x3f) << 12;
    $n += (ord($c[2]) & 0x3f) << 6;
    $n += ord($c[3]) & 0x3f;
    return $n;
 }
}

/**
 * Ascii转拼音
 * @param $asc
 * @param $pyarr
 */
function asc_to_pinyin($asc,&$pyarr) {
 if($asc < 128)return chr($asc);
 elseif(isset($pyarr[$asc]))return $pyarr[$asc];
 else {
  foreach($pyarr as $id => $p) {
   if($id >= $asc)return $p;
  }
 }
}
/**
 * gbk转拼音
 * @param $txt
 */
function gbk_to_pinyin($txt) {
 if(CHARSET != 'gbk') {
  $txt = iconv(CHARSET,'GBK',$txt);
 } 
 $l = strlen($txt);
 $i = 0;
 $pyarr = array();
 $py = array();
 $filename = CODETABLEDIR.'gb-pinyin.table';
 $fp = fopen($filename,'r');
 while(!feof($fp)) {
  $p = explode("-",fgets($fp,32));
  $pyarr[intval($p[1])] = trim($p[0]);
 }
 fclose($fp);
 ksort($pyarr);
 while($i<$l) {
  $tmp = ord($txt[$i]);
  if($tmp>=128) {
   $asc = abs($tmp*256+ord($txt[$i+1])-65536);
   $i = $i+1;
  } else $asc = $tmp;
  $py[] = asc_to_pinyin($asc,$pyarr);
  $i++;
 }
 return $py;
}
?>

这段代码来自php教程cms觉得很好,所以拿出来分享给大家,有需要的朋友可以参考一下。

/**
 * 文件扫描
 * @param $filepath     目录
 * @param $subdir       是否搜索子目录
 * @param $ex           搜索扩展
 * @param $isdir        是否只搜索目录
 * @param $md5   是否生成MD5验证码
 * @param $enforcement  强制更新缓存
 */
function scan_file_lists($filepath, $subdir = 1, $ex = '', $isdir = 0, $md5 = 0, $enforcement = 0) {
 static $file_list = array();
 if ($enforcement) $file_list = array();
 $flags = $isdir ? GLOB_ONLYDIR : 0;
 $list = glob($filepath.'*'.(!empty($ex) && empty($subdir) ? '.'.$ex : ''), $flags);
 if (!empty($ex)) $ex_num = strlen($ex);
 foreach ($list as $k=>$v) {
  $v1 = str_replace(PHPCMS_PATH, '', $v);
  if ($subdir && is_dir($v)) {
   scan_file_lists($v.DIRECTORY_SEPARATOR, $subdir, $ex, $isdir, $md5);
   continue;
  }
  if (!empty($ex) && strtolower(substr($v, -$ex_num, $ex_num)) == $ex) {
   if ($md5) {
    $file_list[$v1] = md5_file($v);
   } else {
    $file_list[] = $v1;
   }
   continue;
  } elseif (!empty($ex) && strtolower(substr($v, -$ex_num, $ex_num)) != $ex) {
   unset($list[$k]);
   continue;
  }
 }
 return $file_list;
}
如在我们提供网地址是 httt://www.zhutiai.com 但我们使用下面程序可以自动给它加个超级连接哦。 提供看一个php高级的做法

如在我们提供网地址是 httt://www.111cn.net 但我们使用下面程序可以自动给它加个超级连接哦。
提供看一个php教程高级的做法

function autolink($foo)
{
$foo = eregi_replace('(((f|ht){1}tp://)[-a-za-z0-9@:%_+.~#?&//=]+)', '<a href="1" target=_blank rel=nofollow>1</a>', $foo);
if( strpos($foo, "http") === false ){
$foo = eregi_replace('(www.[-a-za-z0-9@:%_+.~#?&//=]+)', '<a href="http://1" target=_blank rel=nofollow >1</a>', $foo);
}else{
$foo = eregi_replace('([[:space:]()[{}])(www.[-a-za-z0-9@:%_+.~#?&//=]+)', '1<a href="http://2" target=_blank rel=nofollow>2</a>', $foo);
}
return $foo;
}

$str = 'http://';  
echo autolink($str);

更多详细内容请查看:http://www.111cn.net/wy/js-ajax/33810.htm

下面介绍一个简单的做法


function showtext($text){
$search = array('|(http://[^ ]+)|', '|(https教程://[^ ]+)|', '|(www.[^ ]+)|');
$replace = array('<a href="$1" target="_blank">$1</a>', '<a href="$1" target="_blank">$1</a>', '<a href="http://$1" target="_blank">$1</a>');
$text = preg_replace($search, $replace, $text);
return $text;
}

php对文件的操作分类读写追加等方式,不过主要还是只有下面几步,有需要的朋友可参考一下。 将数据写或读入文件,基本上分为三个步骤:

php教程对文件的操作分类读写追加等方式,不过主要还是只有下面几步,有需要的朋友可参考一下。

将数据写或读入文件,基本上分为三个步骤:

1.         打开一个文件(如果存在)

2.         写/读文件

3.         关闭这个文件

 

l打开文件

在打开文件文件之前,我们需要知道这个文件的路径,以及此文件是否存在。

 

用$_SERVER[“DOCUMENT_ROOT”]内置全局变量,来获得站点的相对路径。如下:


$root = $_SERVER[“DOCUMENT_ROOT”];
 

在用函数file_exists()来检测文件是否存在。如下:


If(!file_exists("$root/order.txt")){echo ‘文件不存在’;}
 

接下来用fopen()函数打开这个文件。


$fp = fopen("$root/order.txt",'ab');
 

fopen()函数,接受2个或3个或4个参数。

第一个参数为文件路径,第二个为操作方式(读/写/追加等等),必选参数。


$fp = fopen("$root/order.txt",'ab');
 

第三个为可选参数,如果需要PHP在include_path中搜索一个文件,就可以使用它,不需要提供目录名或路径。


$fp = fopen("order.txt",'ab',true);
 

第四个也为可选参数,允许文件名称以协议名称开始(如http://)并且在一个远程的位置打开这个文件,也支持一些其他的协议,比如ftp等等。

 

如果fopen()成功的打开一个文件,就返回一个指向此文件的指针。在上面我们保存到了$fp变量中。

 

附文件模式图

 

l写文件

在PHP中写文件比较简单。直接用fwrite()函数即可。

fwrite()的原型如下


int fwrite(resource handle,string string [,int length]);
 

第三个参数是可选的,表明写入文件的最大长度。

可以通过内置strlen()函数获得字符串的长度,如下:


fwrite($fp,$outputinfo,strlen($outputinfo));
 

此函数告诉PHP将$outputinfo中的信息保存到$fp指向的文件中。

l读文件

1. 以只读模式打开文件

仍然使用fopen()函数,但只读模式打开文件,就用“rb”文件模式。如下:


$fp = fopen(“$root/order.txt”,’rb’);
2. 知道何时读完文件

我们用while循环来读取文件内容,用feof()函数,作为循环条件的终止条件。如下:


while(!feof($fp)){

         //要处理的信息

}
3.每次读取一行记录

fgets()函数可以从文本文件中读取一行内容。如下:


$fp = fopen("$root/order.txt",'rb');

while(!feof($fp)){

         $info = fgets($fp,999);

         echo $info.'<br />';

}

fclose($fp);
 

这样,他将不断的读入数据,直到读取一个换行符(n)或者文件结束符EOF,或者是从文件中读取了998B,可以读取的最大长度为指定的长度减去1B。

4.读取整个文件

PHP提供了4中不同的方式来读取整个文件。

a).readfile()函数

         它可以不用先fopen($path)文件和关闭文件,也不用echo,直接使用即可。如下:       

 readfile(“$root/order.txt”);
         它会自动把文件的信息,输出到浏览器中。它的原型如下:        

Int readfile(string filename,[int use_include_path[,resource context]]);
         第二个可选参数指定了PHP是否在include_path中查找文件,这一点于fopen函数一样,返回值为从文件中读取的字节总数。

         注:直接使用,不用fopen或fclose

b).fpassthru()函数

         要使用这个函数,必须先fopen()打开一个文件。然后将文件的指针作为参数传递给fpassthru(),这样就可以把文件指针所指向的文件内容输出。然后再将这个文件关闭。如下:        

$fp = fopen(“$root/order.txt”,'rb');
fpassthru($fp);
fclose($fp);
         返回值同样为从文件中读取的字节总数。

         注:必须fopen和fclose

c).file()函数

         除了将文件输出到浏览器中外,他和readfile()函数是一样的,它把结果发送到一个数组中。如下:        

$fileArray = file(“$root/order.txt”);
         文件中的每一行,将作为数组的每一个元素。

         注:直接使用,不用fopen和fclose

d).file_get_contents()函数

于readfile()相同,但是该函数将以字符串的形式返回文件内容,而不是将文件内容直接输出到浏览器中,也就是必须使用echo 输出,如下:


echo file_get_contents(“$root/order.txt”);
注:直接使用,不用fopen和fclose

5.读取一个字符

fgetc()函数从一个文件中一次读取一个字符,它具有一个文件指针函数,这也是唯一的参数,而且它返回下一个字符。如下:


$fp = fopen("$root/order.txt",'rb');

while(!feof($fp)){

         $char = fgetc($fp);           

         if(!feof($fp)){

                   echo ($char == "n" ? '<br />' : $char);

         }

}

fclose($fp);
注:fgetc()函数的一个缺点就是它返回文件的结束符EOF,而fgets()则不会。读取字符后还需要判断feof()。

6. 读取任意长度

fread()函数即为从文件中读取任一长度的字节,函数原型如下:


string fread(resource fp,int length);
使用该函数时,它或者是读满了length参数所指定的字节数,或者是读到了文件的结束。


$fp = fopen("$root/order.txt",'rb');
echo fread($fp,10); //读取10个字节
fclose($fp);
l关闭文件

关闭文件比较简单,直接调用fclose()函数即可,如果返回true,则表明成功,反之。如下:


fclose($fp);
l删除文件

unlink()函数(没有名为delete的函数),如下:


unlink("$root/order.txt");
l确定文件大小

可以使用filesize()函数来查看一个文件的大小(字节为单位),如下:

echo filesize("$root/order.txt");

[!--infotagslink--]

相关文章

  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • cmd下过滤文件名称的两种方法

    这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • php 中英文混合字符串截取

    文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
  • C#实现对字符串进行大小写切换的方法

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 【C#基础】Substring截取字符串的方法小结(推荐)

    这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 解决vue字符串换行问题(绝对管用)

    这篇文章主要介绍了解决vue字符串换行问题(绝对管用),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-06