Posts Tagged ‘函数’

提取HTML代码中文字的C#函数

星期二, 06月 3rd, 2008

/// <summary>
/// 去除HTML标记
/// </summary>
/// <param name=”strHtml”>包括HTMLde源码 </param>
/// <returns>已经去除后de文字</returns>
public static string StripHTML(string strHtml)
{
string [] aryReg ={
@”<script[^>]*?>.*?</script>”,

@”<(\/\s*)?!?((\w :)?\w )(\w (\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w )|.{0})|\s)*?(\/\s*)?>”,
@”([\r\n])[\s] “,
@”&(quot|#34);”,
@”&(amp|#38);”,
@”&(lt|#60);”,
@”&(gt|#62);”,
@”&(nbsp|#160);”,
@”&(iexcl|#161);”,
@”&(cent|#162);”,
@”&(pound|#163);”,
@”&(copy|#169);”,
@”&#(\d );”,
@”–>”,
@”<!–.*\n”
};

string [] aryRep = {
“”,
“”,
“”,
“\”",
“&”,
“<”,
“>”,
” “,
“\xa1″,//chr(161),
“\xa2″,//chr(162),
“\xa3″,//chr(163),
“\xa9″,//chr(169),
“”,
“\r\n”,
“”
};

string newReg =aryReg[0];
string strOutput=strHtml;
for(int i = 0;i<aryReg.Length;i )
{
Regex regex = new Regex(aryReg[i],RegexOptions.IgnoreCase );
strOutput = regex.Replace(strOutput,aryRep[i]);
}

strOutput.Replace(”<”,”");
strOutput.Replace(”>”,”");
strOutput.Replace(”\r\n”,”");


return strOutput;
}

介绍几个ASP.NET中容易忽略但却很重要的方法函数

星期二, 06月 3rd, 2008

给大家介绍几个.NET中Path类de几个方法:

1. Path.combine(string, string)
根据给出de两个路径, 返回一个路径.
例如:
string CompletePath = System.IO.Path.Combine(@”c:\MyApp”, @”Images\skyline.jpg”);
将会返回一个全路径 c:\MyApp\Images\skyline.jpg
第一个参数中有无”\”结尾都可以.

2. Path.GetExtension(string)
返回给定文件路径de扩展名.例如:
string FileExtention = System.IO.Path.GetExtention(@”C:\MyApp\Images\skyline.jpg”);
将会返回 “jpg”

3. Path.GetFileName(string)
给出文件名de全路径,返回文件名(包括扩展名).例如:
string fileName = System.IO.Path.GetFileName(@”c:\MyApp\Images\skyline.jpg”);
将会返回”skyline.jpg”

随机生成文件名的函数

星期一, 06月 2nd, 2008

<html>
<meta http-equiv=”Refresh” content=”2″>
<!–
Place this code into an ASP Page and run it!
–>
<code>
Random FileName Creation

<%
Function Generator(Length)
dim i, tempS, v
dim c(39)
tempS = “”
c(1) = “a”: c(2) = “b”: c(3) = “c”: c(4) = “d”: c(5) = “e”: c(6) = “f”: c(7) = “g”
c(8) = “h”: c(9) = “i”: c(10) = “j”: c(11) = “k”: c(12) = “l”: c(13) = “m”: c(14) = “n”
c(15) = “o”: c(16) = “p”: c(17) = “q”: c(18) = “r”: c(19) = “s”: c(20) = “t”: c(21) = “u”
c(22) = “v”: c(23) = “w”: c(24) = “x”: c(25) = “y”: c(26) = “z”: c(27) = “1″: c(28) = “2″
c(29) = “3″: c(30) = “4″: c(31) = “5″: c(32) = “6″: c(33) = “7″: c(34) = “8″: c(35) = “9″
c(36) = “-”: c(37) = “_”: c(38) = “@”: c(39) = “!”
If isNumeric(Length) = False Then
Response.Write “A numeric datatype was not submitted to this function.”
Exit Function
End If
For i = 1 to Length
Randomize
v = Int((39 * Rnd) 1)
tempS = tempS & c(v)
Next
Generator = tempS
End Function
For i = 1 to 20
Randomize
x = Int((20 * Rnd) 1) 10
Response.Write Generator(x) & “<br>” & vbnewline
Next
%>
</code>
(出处:Viphot)

JSP中的字符替换函数 str

星期一, 06月 2nd, 2008

//
// StrReplace.java
//
package forum;
import java.util.*;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
public class StrReplace {
public StrReplace() {
}
public String str_replace(String from,String to,String source)
{
StringBuffer bf= new StringBuffer("");
StringTokenizer st = new StringTokenizer(source,from,true);
while (st.hasMoreTokens())
{
String tmp = st.nextToken();
System.out.println("*" tmp);
if(tmp.equals(from))
{
bf.append(to);
}
else
{
bf.append(tmp);
}
}
return bf.toString();
}
}

// 使用方法
<jsp:useBean id="replace" scope="page" class="forum.StrReplace" />
<%= replace.str_replace("<","^","<h1>123456</h1>") %>

php中iconv函数使用方法

星期一, 06月 2nd, 2008

iconv函数库能够完成各种字符集间de转换,是php编程中不可缺少de基础函数库.
1、下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz;
2、解压缩tar -zxvf libiconv-1.9.2.tar.gz;
3、安装libiconv
#configure –prefix=/usr/local/iconv
#make
#make install
4、重新编译php 增加编译参数–with-iconv=/usr/local/iconv
windows下
最近在做一个小偷程序,需要用到iconv函数把抓取来过deutf-8编码de页面转成gb2312, 发现只有用iconv函数把抓取过来de数据一转码数据就会无缘无故de少一些. 让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数de一个bug.iconv在转换字符”—”到gb2312时会出错
解决方法很简单,就是在需要转成de编码后加 “//IGNORE” 也就是iconv函数第二个参数后.如下:
以下为引用de内容:
iconv(”UTF-8″,”GB2312//IGNORE”,$data)
ignorede意思是忽略转换时de错误,如果没有ignore参数,所有该字符后面de字符串都无法被保存.

懒惰是金 介绍几个php通用的函数第1/2页

星期一, 06月 2nd, 2008


但是,要成为一名PHP编程高手却并不容易.并不像很多人想象de那样,只要能够飞快地编写几条简单de相关代码去解决一个复杂de问题就是PHP编程高手了,真正dePHP高手还需要考虑更多de其它问题.以下三条准则是一名成熟dePHP程序员在编程中应该首先遵循de准则.
1.懒惰是金
2.编写漂亮de相关代码
3.追求程序de速度,而不是编程de速度
一、懒惰是金
做一个懒惰de程序员吗?这个想法太奇怪了!因为这个世界上最忙碌de人可能就是计算机程序员了.但正是因为程序员太忙了,所以才应该在编程时学会偷懒.
对于一个程序员来说,懒惰de方法有两种:其一,大胆使用现成de别人de程序相关代码,把这些相关代码融入到您自己de程序或者项目中去.其二是编写一些有用de相关代码建立一个函数库,在将来编写程序时可以顺手拈来,省去了许多重复de劳动,自然就可以懒惰一点了.
这两种偷懒de方法都非常适合PHP程序员了.
首先,PHP是在自由开放de环境中诞生和成长de一门语言.在世界各地,有成千上万de程序员,他们一直在为PHPde完美而不断奋斗,他们也愿意和别人分享自己de聪明才智和自己编写de相关代码.您每天都可以从一些PHP网站、邮件列表、新闻组发现大量de优秀de程序相关代码.这样说,我并不是鼓励您整天等着让别人为您编写相关代码,但是您可以“站在伟人de肩膀上”,充分发扬“拿来主义”,聪明地应用别人de程序相关代码可以节省您大量时间.其次,在PHP中,您可以方便地建立自己de函数库,这样可以在您以后编写程序时省去很多麻烦.
下面笔者为大家介绍几个通用de函数,这些函数有de来自网上de一些开放源相关代码de项目,有de精选自邮件列表.如果您能把它们加入到您自己de函数库中,迟早您将会发现自己受益无穷.

1.通用数据库处理函数
和其它deCGI函数相比,PHPde优点之一是具有很强大de数据库处理能力.但是,在PHP中,对于不同de数据库都使用一些特定de函数来专门处理,缺少通用de数据库处理函数.这大大降低了程序相关代码de可移植性,这也为初学编程de朋友带来了很多不便.
在网上,许多程序员都通过封装类解决了这个问题.他们编写了统一de函数用来处理任何流行de数据库——不管是在Linux世界深受欢迎deMysql还是在Windows平台上广泛流行deSqlServer.就笔者个人来说,非常喜欢使用这些函数,因为可以直接使用一些简单de诸如”query”、”next_record”之类de函数,而不需要考虑数据库de连接、数据库句柄这些复杂de东西,更不需要考虑使用de是何种数据库.
如果您需要这些函数,您可以通过访问以下de几个网址而得到:
http://phplib.netuse.de/
http://phpclasses.UpperDesign.com/browse.html/package/20
http://phpdb.linuxbox.com/

2.变量调试函数

PHP程序de调试一直是一件让人头疼de事,它既不像VB等高级语言那样有集成de编译调试环境,也不想Perl那样可以在Linux或者DOS环境下直接运行.其实,我完全可以通过灵活地使用echo语句来完成对PHPde调试工作.
下面de几个函数可以让您随时查看程序中任何变量de类型及其值.
function ss_array_as_string (&$array, $column = 0) {
$str = “Array(
n”;
while(list($var, $val) = each($array)){
for ($i = 0; $i < $column+1; $i++){
$str .= “&nbsp;&nbsp;&nbsp;&nbsp;”;
}
$str .= $var. ==> ;
$str .= ss_as_string($val, $column+1).”
n”;
}
for ($i = 0; $i < $column; $i++){
$str .= “&nbsp;&nbsp;&nbsp;&nbsp;”;
}
return $str.);
}
function ss_object_as_string (&$object, $column = 0) {
if (empty($object->classname)) {
return “$object”;
}
else {
$str = $object->classname.”(
n”;
while (list(,$var) = each($object->persistent_slots)) {
for ($i = 0; $i < $column; $i++){
$str .= “&nbsp;&nbsp;&nbsp;&nbsp;”;
}
global $$var;
$str .= $var. ==> ;
$str .= ss_as_string($$var, column+1).”
n”;
}
for ($i = 0; $i < $column; $i++){
$str .= “&nbsp;&nbsp;&nbsp;&nbsp;”;
}
return $str.);
}
}
function ss_as_string (&$thing, $column = 0) {
if (is_object($thing)) {
return ss_object_as_string($thing, $column);
}
elseif (is_array($thing)) {
return ss_array_as_string($thing, $column);
}
elseif (is_double($thing)) {
return “Double(”.$thing.”)”;
}
elseif (is_long($thing)) {
return “Long(”.$thing.”)”;
}
elseif (is_string($thing)) {
return “String(”.$thing.”)”;
}
else {
return “Unknown(”.$thing.”)”;
}
}
需要de时候,在程序中简单地加入下面de一条相关代码即可查看程序中de所使用de变量(包括数组和对象)de类型和值:
echo ss_as_string($my_variable);
使用下面de语句,我可以直接查看程序中所有de变量de值:
echo ss_as_string($GLOBALS);

php下过滤HTML代码的函数

星期一, 06月 2nd, 2008

/*———————-
过滤HTML相关代码de函数
———————–*/
function htmlEncode($string) {
$string=trim($string);
$string=str_replace(”&”,”&”,$string);
$string=str_replace(”‘”,”'”,$string);
$string=str_replace(”&amp;”,”&”,$string);
$string=str_replace(”&quot;”,”"”,$string);
$string=str_replace(”\”",”"”,$string);
$string=str_replace(”&lt;”,”<”,$string);
$string=str_replace(”<”,”<”,$string);
$string=str_replace(”&gt;”,”>”,$string);
$string=str_replace(”>”,”>”,$string);
$string=str_replace(”&nbsp;”,” “,$string);
$string=nl2br($string);
return $string;
}

一个可以删除字符串中HTML标记的PHP函数

星期一, 06月 2nd, 2008

一个可以删除字符串中HTML标记dePHP函数
作者:limote

当访客留言和发帖时,我并不希望访客在留言和帖子中使用HTML标记,所以在访客提交留言和帖子时我门得把HTML标记删除,下面de函数就是实现此功能de函数
<?
function delete_htm($scr)
{
for($i=0;$i<strlen($scr);$i )
{
if(substr($scr,$i,1)=="<")
{
while(substr($scr,$i,1)!=">")$i ;
$i ;
}
$str=$str.substr($scr,$i,1);
}
return($str);
}
?>

PHP 和 XML: 使用expat函数(三)

星期一, 06月 2nd, 2008

PHP 和 XML: 使用expat函数(三)
如何在一个PHP 脚本中使用这个类呢?实际上非常简单.这里有一个例子:

  首先类定义需要被包括在脚本中
require (CLASS_DIR."class.Newsboy.php");
  然后,我创建一个类de实例,并且设置文件性为我deXML文档de实际链接.
$news = new newsboy();
$news->xml_file = "xml/mynews.xml";
  或
$news->xml_file = "http://xmldocs.mysite.com/mynews.xml"
  然后我调用分析器来分析文档.
$news->parse();
  然后我打印html到屏幕上.
print ($news->html);
  并且,在最后在完成时必须释放类.
$news->destroy();
  这就是所有要做de事.
小节
  在这篇简短de文件中,我涉及了使用PHP来处理XMLde流程:

简单deXML文档结构
为XML分析器定义简单de标记
设置XML分析器de简单选项
向XML分析器注册回调函数
通过一个PHP类来使用XML分析器
在另一个脚本中使用PHP类

PHP 和 XML: 使用expat函数(二)

星期一, 06月 2nd, 2008

PHP 和 XML: 使用expat函数(二)
  让我看一下实际处理这个文档dePHP相关代码.

/*NewsBoy : News system for the web written in PHP by Justin Grant (Web: jusgrant.cjb.net or justin.host.za.net Mail: justin@glendale.net)25 March V0.0.2 Converted Newsboy to a PHP class, allowing the layout to be easily modified. Also added made the HTML that is genrated a little easier to read.24 March V0.0.1 Just completed the intial version, very rough and basic.*/
class newsboy { var $xml_parser; var $xml_file; var $html; var $open_tag ; var $close_tag ;
//Class Constructor
function newsboy() { $this->xml_parser = ""; $this->xml_file = ""; $this->html = ""; $this->open_tag = array(
//these are the default settings but they are quite easy to modify
"NEWSBOY" => "nn", "STORY" => " ", "DATE" => "", "SLUG" => " ", "TEXT" => "", "PIC" => "", "NEWLINE" => "" ); $this->close_tag = array( "NEWSBOY" => "
nnn", "STORY" => "", "DATE" => "", "SLUG" => "
", "TEXT" => "n", "PIC" => " "
" ); }
//Class Destructor (has to be invoked manually as PHP does not support destructors)
function destroy() { xml_parser_free($this->xml_parser); }
//Class Members
function concat($str) { $this->html .= $str; }
function startElement($parser, $name, $attrs) { //global $open_tag; if ($format= $this->open_tag[$name]) { $this->html .= $format; } }
function endElement($parser, $name) { global $close_tag; if ($format= $this->close_tag[$name]) { $this->html .= $format; } }
function characterData($parser, $data) { $this->html .= $data; }
/* function PIHandler($parser, $target, $data) { //switch (strtolower($target)){ // case "php": eval($data); // break; //} }*/
function parse() { $this->xml_parser = xml_parser_create(); xml_set_object($this->xml_parser, &$this); // use case-folding so we are sure to find the tag in $map_array
xml_parser_set_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true); xml_set_element_handler($this->xml_parser, "startElement", "endElement"); xml_set_character_data_handler($this->xml_parser, "characterData");//xml_set_processing_instruction_handler($this->xml_parser, "PIHandler");
if (!($fp = fopen($this->xml_file, "r"))) { die("could not open XML input"); } while ($data = fread($fp, 4096)) { if (!xml_parse($this->xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->xml_parser)), xml_get_current_line_number($this->xml_parser))); } } }}
?>

——————————————————————————–
  在这个类de构造函数中,我创建了打开与关闭两个标记数组.数组de关键字与我后面将要分析de标记是
一样de,并且它们相应de值包含格式化打开与关闭标记deHTML相关代码.
  我定义了一个简单de类析构函数用来当我不再需要它时释放XML 分析器.这个函数不得不手工调用,
因为PHP不支持当一个对象释放时自动调用类de析构函数.
  然后我定义了在XML文档中用来分析打开和关闭标记de主回调方法.我也定义了一个数据分析方法, 将
用于当打开和关闭标记中有数据时,对数据进行简单de格式化,后面我将向您演示如何将这些回调方法注册
到分析器中.
  在startElement和closeElement(当分析到一个打开或关闭标专时被分别调用)中使用 标记de名字
作为索引键值对相应de数组进行查询.如果那个键值存在,则返回值并且追加到类de’html’ 属性de后面.
‘html’属性将在以后我真正显示文档内容de时候使用.
  characterData方法简单地将标记之间de值加到类dehtml属性de后面.
  被注释起来de叫PIHandlerde方法是一个回调函数,我还未曾实现它.如果它存在de话,它将直接在XML
文档中处理php脚本.
  现在,让我解释一下主要de分析方法de调用,您猜一猜,parse()!!!
  第一行调用了函数xml_parser_create(),它将返回一个expatdexml分析器de实例,并且被保存在类de
属性&this->xml_parser中.
  下一步,我需要用函数xml_set_object()来注册一个类方法de回调函数.
  我是这样使用de,xml_set_object($this->xml_parser, &$this).我在第一个参数中指定了用
来保存xml 分析器de类属性,然后在第二个参数,我指定了PHP对象de实例地址.这个可以让分析器 知道全
部将要注册de回调函数,是在那个地址上指定类de实际de方法.这就象c或c 中de一个’引用传递’,也有人
简单地叫做’引用变量’.
  在下一行,我调用了xml_parser_set_option()设置了一个xml分析器de属性,使用大小写折叠( case
folding).大小写折叠只是告诉分析器知道,当我分析我deXML文档时我并不关心大小写敏感,但是 如果您
想使用大小写敏感来定义两个不同de标记,如或,您可以不设置它.
  通过使用xml_set_element_handler(),我指定了用于开始和结束标记de回调函数,名字是
"startElement"和"endElement".
  接着,我使用xml_set_character_data_handler()来指定字符数据de处理句柄为名为
characterData()de回调函数.被注释de函数调用,xml_set_processing_instruction_handler(),
是一个我用于注册函数 PIHandler()de调用.PIHandler可以被包括在XML文档中处理php相关代码.
  其它de相关代码只是很简单地读XML文件并且分析它.如果一个错误发生,那么错误明细将返回,包括错误
发生de行号.