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;
}

PHP提取中文首字母

星期一, 06月 2nd, 2008

[复制此相关代码]CODE:
<?
function pykey( $py_key)
{
$pinyin = 65536 pys($py_key);
if ( 45217 <= $pinyin && $pinyin <= 45252 )
{
$zimu = “A”;
return $zimu;
}
if ( 45253 <= $pinyin && $pinyin <= 45760 )
{
$zimu = “B”;
return $zimu;
}
if ( 45761 <= $pinyin && $pinyin <= 46317 )
{
$zimu = “C”;
return $zimu;
}
if ( 46318 <= $pinyin && $pinyin <= 46825 )
{
$zimu = “D”;
return $zimu;
}
if ( 46826 <= $pinyin && $pinyin <= 47009 )
{
$zimu = “E”;
return $zimu;
}
if ( 47010 <= $pinyin && $pinyin <= 47296 )
{
$zimu = “F”;
return $zimu;
}
if ( 47297 <= $pinyin && $pinyin <= 47613 )
{
$zimu = “G”;
return $zimu;
}
if ( 47614 <= $pinyin && $pinyin <= 48118 )
{
$zimu = “H”;
return $zimu;
}
if ( 48119 <= $pinyin && $pinyin <= 49061 )
{
$zimu = “J”;
return $zimu;
}
if ( 49062 <= $pinyin && $pinyin <= 49323 )
{
$zimu = “K”;
return $zimu;
}
if ( 49324 <= $pinyin && $pinyin <= 49895 )
{
$zimu = “L”;
return $zimu;
}
if ( 49896 <= $pinyin && $pinyin <= 50370 )
{
$zimu = “M”;
return $zimu;
}
if ( 50371 <= $pinyin && $pinyin <= 50613 )
{
$zimu = “N”;
return $zimu;
}
if ( 50614 <= $pinyin && $pinyin <= 50621 )
{
$zimu = “O”;
return $zimu;
}
if ( 50622 <= $pinyin && $pinyin <= 50905 )
{
$zimu = “P”;
return $zimu;
}
if ( 50906 <= $pinyin && $pinyin <= 51386 )
{
$zimu = “Q”;
return $zimu;
}
if ( 51387 <= $pinyin && $pinyin <= 51445 )
{
$zimu = “R”;
return $zimu;
}
if ( 51446 <= $pinyin && $pinyin <= 52217 )
{
$zimu = “S”;
return $zimu;
}
if ( 52218 <= $pinyin && $pinyin <= 52697 )
{
$zimu = “T”;
return $zimu;
}
if ( 52698 <= $pinyin && $pinyin <= 52979 )
{
$zimu = “W”;
return $zimu;
}
if ( 52980 <= $pinyin && $pinyin <= 53640 )
{
$zimu = “X”;
return $zimu;
}
if ( 53689 <= $pinyin && $pinyin <= 54480 )
{
$zimu = “Y”;
return $zimu;
}
if ( 54481 <= $pinyin && $pinyin <= 62289 )
{
$zimu = “Z”;
return $zimu;
}
$zimu = $py_key;
return $zimu;
}
function pys( $pysa )
{
$pyi = “”;
$i= 0;
for ( ; $i < strlen( $pysa ); $i )
{
$_obfuscate_8w= ord( substr( $pysa,$i,1) );
if ( 160 < $_obfuscate_8w)
{
$_obfuscate_Bw = ord( substr( $pysa, $i , 1 ) );
$_obfuscate_8w = $_obfuscate_8w * 256 $_obfuscate_Bw - 65536;
}
$pyi.= $_obfuscate_8w;
}
return $pyi;
}
$letter = pykey(”中华人民共和国”);
echo $letter;
?>

php录入页面中动态从数据库中提取数据的实现

星期一, 06月 2nd, 2008

摘要:用php制作动态web页面时,在提交服务器之前,让php根据用户在当前页面上录入de某字段de值立即从数据库中取出相关de其它字段de值并显示到当前页面上,是php程序开发中de难点.本文以一个具体实例详细介绍了怎样将两个html内嵌式语言php和javascript巧妙结合起来,解决这个难点de具体方法.
关键词:php、动态、html.
现在de网站已经从以前提供静态信息de形式发展到交互式de提供动态信息业务de方式.webde信息服务形式可以概括为两点:向客户提供信息;记录客户提交de信息.要提供这两种服务,需解决de问题是:如何快速地让用户在自己网站大量de信息中快速提取他想要de信息,如何有效地记录用户提交de信息,以便于将来用户查找.这些问题都可以通过在网站中加入数据库支持来解决.
因php对多种数据库都能提供良好de支持,且phpde脚本直接嵌入在html文档中,使用非常方便.因此php是现在internet上最流行de一种server端嵌入语言之一.另外,与其它deserver端脚本语言如asp相比,php免费开放源码并且提供跨平台de支持,这使它能够轻易适应当今网络中各种异质de网络环境;可让网页制作人员能够非常快捷、方便地制作出功能强大de动态web页面.但是,由于php是服务器端嵌入,更直观de理解是php语句是在服务器上执行,所以它只有提交时才将当前页面上de内容接收和处理.而当您需要de内容是根据客户当前页面上录入de某字段de值,再动态到库中提取时,php就无能为力了.例如:要向客户提供一个“订货合同”de录入页面,其中包含一些“供货商信息”de录入,而各供货商de详细信息事先已在一个“商家”字典表中录入,现在要求当客户在当前页面上选中某“供货商”时,立时从“商家”字典表中将该供货商de某些信息如“开户行、帐号、地址、电话”等提取出来显示到当前页面上供客户直接使用或修改使用.这样de要求若用可视化编程语言如pb、vb等实现是一件轻而易举de事,但pb、vb不适合编写动态web页面;php适合编写动态web页面,但由于是服务器端嵌入,不能及时获得提交前页面上de变量值,所以实现上述要求就有一定de难度.在程序编写过程中,我将php与javascript巧妙结合起来,解决了这个难点.
我知道,同样是嵌入语句,但是javascript 又不同于php语言.因为php是服务器端嵌入,而javascript是客户端嵌入,既javascript语句是在客户de浏览器上执行,这就决定了javascript可及时获得当前页面上de变量值,但又无法对服务器端de数据库直接操作.所以,将二者结合起来制作出功能强大de动态web页面,可谓是珠联璧合.为了叙述方便,下面只以从字典表中取出选中供货商de地址为例,说明具体做法.当需要取出多个字段时,方法类似,但利用javascript函数从字符串中逐个取出时,要细心一些.
1.编写一个php函数
此函数de功能是将所有符合条件de“供货商信息”从“商家”字典表中取出,并存放到一个字符串变量$khsz中.
function khqk_tq($questr){
global $dbconn;
$dbq_resl=sybase_query($questr,$dbconn); //送出一个query字符串供sybase执行.
$dbq_rows=sybase_num_rows($dbq_resl); //获得返回行de数目.
$j=0;
for ($i=0;$i<$dbq_rows;$i ){ //建循环,将每行中所需字段取出,并放到数组$k[]中.
$k[]=sybase_result($dbq_resl,$i,"kh_id"); //取出用户选择de供货商编号.
$add=sybase_result($dbq_resl,$i,"address"); //取出该供货商地址.
if ($add==""):
$k[]="无";
else :
$k[]=sybase_result($dbq_resl,$i,"address");
endif;
$khsz=$khsz.$k[$j]."|".$k[$j 1]."|"; //将各字段值以”|”为分隔符,连接到变量$khsz 中,形成一个长字符串.
$j=$j 2;
}
return $khsz;
}
2.编写一个javascript函数
该函数de功能是从字符串中根据kh_id值找到该供货商de地址,嵌入到html文件中.
<script language="javascript">
var khstr="<?=$k?>" //先将php变量转变成javascript变量khstr.
function khxz_onclick(){
frm=document.frmplanfill;
ghstj=frm.kh_id.value; //获得当前页面上刚刚选中de“供货商”dekh_id值.
numkh=khstr.indexof(ghstj,0) ; //从khstr串中找到该kh_id值所在de位置.
addr=khstr.substring(khstr.indexof("|",numkh) 1,khstr.indexof("|",khstr.indexof("|",numkh) 1)); //从 khstr串中取出与kh_id对应de地址字段de值.
frm.address.value=addr; //将取出de值赋给当前录入页面上de字段变量address.
}
</script>
3.在html中将二者结合起来,互为所用
$khinfo="select kh_id,address from kh where co_id=$s_coid and type=’g’ order by kh_id";
//将取供货商信息desql语句放到变量$khinfo中.
$k=khqk_tq($khinfo); //调用php函数,并将返回de字符串值放到变量$k中.
<meta name="generator" content="microsoft developer studio">
<meta http-equiv="content-type" content="text/html; charset=gb_2312-80">
<title>订货合同管理</title>
</head>
<body style="background-color: ivory">
<form name=frmplanfill method=post action="dhht_crt.php">

<table align=center border=1 cellpadding=0 cellspacing=0 width="90%" style="font-size: 10pt">

<tr>
<td>合同编号</td><td><input name=htbh size=15></td>
<td>合同概述</td><td colspan=5><input name=htgs size=53></td>
</tr>
<tr>
<td>供货厂商</td>
<td><select name="kh_id" onchange="khxz_onclick()"> //当每次改变所选供货商时,触发上述javascript函数.
<?prt_sele("select convert(int,kh_id),name from kh where co_id=$s_coid and type=’g'",0,1)?></select></td> //将符合条件de所有供货商名称放到下拉列表框中供用户选择.其中prt_sele是自定义de php函数.
<td>地 址</td>
<td colspan=3><input type=text name=address size=34 ></td> //触发javascript函数de结果是使得adrress变量获得值并显示到页面上.
以上相关代码de系统环境是:linux操作系统、sybase数据库、web server为apache、php4程序界面.以上将php和javascript相结合de程序开发思想已成功地运用到我开发de多个动态web页面中.

同时提取多条新闻中的文本一例

星期一, 06月 2nd, 2008

本文为一个提取一批新闻网页中de文本de小程序,它可以将各篇新闻de内容存为以该新闻标题为文件名de文本文件.如有更好de处理方法,请和我联系:
lwx3069@sina.com
这里以人民网中de“今日要闻”下de新闻为例.
<?php
($url) ? "" : $url = "http://www.unn.com.cn/GB/channel2/3/11/index.html"; // 今日要闻
if(isset($url)&&$url!="") {
$str = implode("",file($url));
$str_ary = explode("<ul>",$str);
$str_ary = explode("<li>",trim($str_ary[1]));
for ($i=0; $i<8; $i ) {
if (strlen(trim($str_ary[$i]))<3){
continue;
}
echo "新闻".$i.":".$str_ary[$i];
$str1=strstr("$str_ary[$i]",’<a href="/’);
$str2=strstr("$str_ary[$i]",’" target’);
$len1=strlen("$str1");
$len2=strlen("$str2");
$len=$len1-$len2;
$url=substr("$str1",10,$len-10);
if (strlen(trim($url))!=0) {
$url = "http://www.unn.com.cn/".$url;
define(CONTENTS_DIR,"./contents/");
if(isset($url)&&$url!="") {
$str = implode("",file($url));
$str1=explode(’<div align="right">’,$str); //去掉文件没用de上半部分
$str2 = explode(’<h4 align="center"> </h4>’,$str1[1]);
//取出文件de下半部分,并去掉没用de下半部分,这时得到de都是有用de
$str3=explode(’</font><font size=" 2"><b><font size="3">’,$str2[0]); //从整个有用部分取出文件标题和正文
$str4=explode(’</div>’,$str2[0]); //取出日期和时间
$str5=explode(’</font></b></font><font size="2">’,$str3[1]); //从标题和正文部分取出标题
$title=str_replace("<br>","",$str5[0]);
$str3=explode(’<p><font size="2">’,$str2[0]); //从整个有用部分取出文件正文
$str3[1]=str_replace(’<br><br> ‘,"\n"."  ",$str3[1]);
$str3[1]=str_replace(’ ‘,"",$str3[1]);
$str3=strip_tags($str3[1]);
$pf=trim($title).".txt";
$ppf=fopen(CONTENTS_DIR."$pf",’w');
fputs($ppf,$title);
fputs($ppf,"$str4[0]");
fputs($ppf,$str3);
}
}
}
}
?>

提取HTML标签

星期一, 06月 2nd, 2008

<?php
/*********************************
*
* 作者: 徐祖宁 (唠叨)
* 邮箱: czjsz_ah@stats.gov.cn
* 开发: 2002.07
*
*
* 函数: tags
* 功能: 从文件中提取HTML标签
*
* 入口:
* $filename 文件名
* $tag 标签名
* 返回:
* 数组,每项为:
* tagName String
* Text String
* Attrs Array
*
* 示例:
* print_r(tags("test1.htm","a"));
* print_r("http://localhost/index.htm","img");
*
*/
function tags($filename,$tag) {
$buffer = join("",file($filename));
$buffer = eregi_replace("\r\n","",$buffer);
$tagkey = sql_regcase($tag);
$buffer = eregi_replace("<$tagkey ","\n<$tag ",$buffer);
$ar = split("\n",$buffer);
foreach($ar as $v) {
if(! eregi("<$tagkey ",$v)) continue;
eregi("<$tagkey ([^>]*)((.*)</$tagkey)?",$v,$regs);
$p[tagName] = strtoupper($tag);
if($regs[3])
$p[Text] = $regs[3];
$s = trim(eregi_replace("[ \t] "," ",$regs[1]))." ";
$s = eregi_replace(" *= *","=",$s);
$a = split(" ",$s);
for($i=0;$i<count($a);$i ) {
$ch = array();
if(eregi("=[\"']",$a[$i])) {
$j = $i 1;
while(!eregi("[\"']$",$a[$i])) {
$a[$i] .= " ".$a[$j];
unset($a[$j]);
}
}
}
foreach($a as $k) {
$name = strtoupper(strtok($k,"="));
$value = strtok("\0");
if(eregi("^[\"']",$value))
$value = substr($value,1,-1);
if($name)
$p[Attrs][$name] = $value;
}
$pp[] = $p;
}
return $pp;
}
?>