PHP 清理字符串中所有无用标签
例子
代码如下 | 复制代码 |
function Bing_string_cleanr( $string ){ |
使用方法:
代码如下 | 复制代码 |
echo Bing_string_cleanr( '内 容 <br> <html> asdfeiuonsdfje' ); |
删除空白
代码如下 | 复制代码 |
<?php // First remove the leading/trailing whitespace // Now remove any doubled-up whitespace // Finally, replace any non-space whitespace, with a space // Echo out: 'This line contains liberal use of whitespace.' |
并且附加上代码:
代码如下 | 复制代码 |
<?php |
1、需要设置一个 TOKEN 信息
代码如下 | 复制代码 |
efine("TOKEN", "weixin"); |
这个 TOKEN 信息可以由开发者自行设定。
2、有个 wechatCallbackapiTest 类,该类中含有3个方法:valid、responseMsg、checkSignature,其中方法valid、checkSignature是用作验证接口URL有效性用的,responseMsg是我们使用最多的方法,后续大部分的开发工作都会在这里完成。
在我们对接口进行有效性验证通过后,就不再需要进行验证了,这时我们就需要使用到 responseMsg 方法。那么如何保证接口验证通过后,不需要去切换其中的方法或修改其中的代码呢?
我是这样做的:
代码如下 | 复制代码 |
public function indexAction() //valid signature , option return FALSE; |
讲解一下:
因为在验证接口有效性时传递了个 echostr 参数,而在消息接口响应过程中没有这个参数,所有我们这里用这个参数来判断是验证接口还是接口响应:
代码如下 | 复制代码 |
isset($_GET['echostr']) |
本来是不想写这篇博文的,但又怕网友被坑,我还是写一下。
下载 jquery扩展wScratchPad.js, 原站的页面打不开,我这里提供一个下载地址 http://file.111cn.net/upload/2014/4/wScratchPad-1.4.4.zip
然后(冷静),一些没节操的博主,直接转别人的文章,验证的过程都省了,应该坑了不是小白。我这里修正一下
在这个扩展里面,怎么才能过去用户的刮开的面积
$("#wScratchPad3").wScratchPad({
cursor:'', //设置鼠标的样式
color:'gray' , //设置覆盖物的颜色,跟image2功能相斥
width:"300",
height:"100",
image: "" //顶部的图片
// 更多配置相关的选项请看源码
scratchUp: function(e, percent){
if(percent > 60)
{
alert("sss");
}
}
});
从上面的代码,看的出来,这个跟网上所谓的教程不一样,这里获取刮开的范围用到函数不是
scratchMove()
而是
scratchUp()
为嘛?看源码
scratchFunc: function(e, $this, event)
{
e.pageX = Math.floor(e.pageX - $this.canvas_offset.left);
e.pageY = Math.floor(e.pageY - $this.canvas_offset.top);
$this['scratch' + event](e, $this);
if(this.settings.realtimePercent || event == "Up") {
if($this.settings['scratch' + event]) $this.settings['scratch' + event].apply($this, [e, $this.scratchPercentage($this)]);
}
}
这里这个获取函数绑定的UP 而不是move
注意这里的wScratchPad是1.4.4最新版。
在使用插件之前,请配置好交通银行在线支付的环境(具体安装方法,交行提供的demo会有,也不是很难,注意好细节就行)。安装好之后,请将includes文件夹和languages文件夹拷贝到ecshop站点的根目录覆盖(最下面有源码下载),最后进入后台的支付模块安装即可。
以下是调用的范例:
代码如下 | 复制代码 |
$order_['orderid'] = $order['order_sn']; $order_['amount'] = $order['yd_price']; $order_['orderMono'] = '测试'; //商家备注 $order_['goodsURL'] = "http://".$_SERVER['HTTP_HOST'].'/respond.php?code=bankcomm'; //取货URL $pay_code = new bankcomm; $pay_button = $pay_code->get_code($order_); $order['pay_button'] = $pay_button; //即此时已经生成了一个支付按钮 |
源码(includes/modules/payment/bankcomm.php):
代码如下 | 复制代码 |
<?php
* 交通银行在线支付插件 For Ecshop * Author: Reson * Date: 2014/03/31 */
{ die('Hacking attempt'); }
{ global $_LANG; include_once($payment_lang); }
if (isset($set_modules) && $set_modules == TRUE) { $i = isset($modules) ? count($modules) : 0;
$modules[$i]['code'] = basename(__FILE__, '.php');
$modules[$i]['desc'] = 'bankcomm_desc';
$modules[$i]['is_cod'] = '0';
$modules[$i]['is_online'] = '1';
$modules[$i]['pay_fee'] = '0';
$modules[$i]['author'] = 'Reson';
$modules[$i]['website'] = 'http://www.daixiaorui.com';
$modules[$i]['version'] = '1.0.0.0';
$modules[$i]['config'] = array(); return; }
* 类 */ class bankcomm { /** * 构造函数 * * @return void */ function bankcomm() { }
{ $this->bankcomm(); }
* 提交函数 */ function get_code($order) { //获得表单传过来的数据 $param['interfaceVersion'] = '1.0.0.0'; //消息版本号* $param['merID'] = '301310063009501'; //商户号 (测试号,后期可自行更改) $param['orderid'] = $order['orderid']; //订单号* $param['orderDate'] = local_date("Ymd",gmtime()); //商户订单日期* yyyyMMdd $param['orderTime'] = local_date("His",gmtime()); //商户订单时间* HHmmss $param['tranType'] = 0; //交易类别* 0:B2C $param['amount'] = $order['amount']; //订单金额* $param['curType'] = 'CNY'; //交易币种* 默认CNY $param['orderContent'] = ''; $param['orderMono'] = $order['orderMono']; //商家备注 $param['phdFlag'] = ''; //物流配送标志 $param['notifyType'] = 1; //通知方式* 1 通知 $param['merURL'] = ''; $param['goodsURL'] = $order['goodsURL']; //取货URL $param['jumpSeconds'] = ''; $param['payBatchNo'] = ''; $param['proxyMerName'] = ''; $param['proxyMerType'] = ''; $param['proxyMerCredentials'] = ''; $param['netType'] = 0; //渠道编号* 0:html渠道 $param['issBankNo'] = ''; $tranCode = "cb2200_sign";
//连接字符串 $source = ''; foreach($param as $key=>$val){ if($key != 'issBankNo') $source .= $val.'|'; } $source = substr($source,0,strlen($source)-1);
$socketUrl = "tcp://127.0.0.1:8080"; //这里的端口根据自己配置的情况 $fp = stream_socket_client($socketUrl, $errno, $errstr, 30); $retMsg=""; // if (!$fp) { echo "$errstr ($errno)<br /> "; } else { $in = "<?xml version='1.0' encoding='UTF-8'?>"; $in .= "<Message>"; $in .= "<TranCode>".$tranCode."</TranCode>"; $in .= "<MsgContent>".$source."</MsgContent>"; $in .= "</Message>"; fwrite($fp, $in); while (!feof($fp)) { $retMsg =$retMsg.fgets($fp, 1024); } fclose($fp); } //解析返回xml $dom = new DOMDocument; $dom->loadXML($retMsg); $retCode = $dom->getElementsByTagName('retCode'); $retCode_value = $retCode->item(0)->nodeValue; $errMsg = $dom->getElementsByTagName('errMsg'); $errMsg_value = $errMsg->item(0)->nodeValue; $signMsg = $dom->getElementsByTagName('signMsg'); $signMsg_value = $signMsg->item(0)->nodeValue; $orderUrl = $dom->getElementsByTagName('orderUrl'); $orderUrl_value = $orderUrl->item(0)->nodeValue; $MerchID = $dom->getElementsByTagName('MerchID'); $merID = $MerchID->item(0)->nodeValue; //echo "retMsg=".$retMsg; //echo $retCode_value." ".$errMsg_value." ".$signMsg_value." ".$orderUrl_value; if($retCode_value != "0"){ //echo "交易返回码:".$retCode_value."<br>"; //echo "交易错误信息:" .$errMsg_value."<br>"; return "交易错误信息:" .$errMsg_value."<br>"; }else{ $param['signMsg_value'] = $signMsg_value; $param['orderUrl_value'] = $orderUrl_value; $form_code = $this->create_html($param); //创建提交表单 return $form_code; } } /** * 创建提交表单 */ function create_html($param){ $pay_html ='<form name = "form1" method = "post" action = "'.$param['orderUrl_value'].'"> <input type = "hidden" name = "interfaceVersion" value = "'.$param['interfaceVersion'].'"> <input type = "hidden" name = "merID" value = "'.$param['merID'].'"> <input type = "hidden" name = "orderid" value = "'.$param['orderid'].'"> <input type = "hidden" name = "orderDate" value = "'.$param['orderDate'].'"> <input type = "hidden" name = "orderTime" value = "'.$param['orderTime'].'"> <input type = "hidden" name = "tranType" value = "'.$param['tranType'].'"> <input type = "hidden" name = "amount" value = "'.$param['amount'].'"> <input type = "hidden" name = "curType" value = "'.$param['curType'].'"> <input type = "hidden" name = "orderContent" value = "'.$param['orderContent'].'"> <input type = "hidden" name = "orderMono" value = "'.$param['orderMono'].'"> <input type = "hidden" name = "phdFlag" value = "'.$param['phdFlag'].'"> <input type = "hidden" name = "notifyType" value = "'.$param['notifyType'].'"> <input type = "hidden" name = "merURL" value = "'.$param['merURL'].'"> <input type = "hidden" name = "goodsURL" value = "'.$param['goodsURL'].'"> <input type = "hidden" name = "jumpSeconds" value = "'.$param['jumpSeconds'].'"> <input type = "hidden" name = "payBatchNo" value = "'.$param['payBatchNo'].'"> <input type = "hidden" name = "proxyMerName" value = "'.$param['proxyMerName'].'"> <input type = "hidden" name = "proxyMerType" value = "'.$param['proxyMerType'].'"> <input type = "hidden" name = "proxyMerCredentials" value = "'.$param['proxyMerCredentials'].'"> <input type = "hidden" name = "netType" value = "'.$param['netType'].'"> <input type = "hidden" name = "merSignMsg" value = "'.$param['signMsg_value'].'"> <input type = "hidden" name = "issBankNo" value = "'.$param['issBankNo'].'"> <input type="submit" value=" " class="pay_button" /> </form>'; return $pay_html; }
* 处理函数 */ function respond() { $tranCode = "cb2200_verify"; $notifyMsg = $_REQUEST["notifyMsg"]; $lastIndex = strripos($notifyMsg,"|"); $signMsg = substr($notifyMsg,$lastIndex+1); //签名信息 $srcMsg = substr($notifyMsg,0,$lastIndex+1);//原文 //连接地址 $socketUrl = "tcp://127.0.0.1:8080"; $fp = stream_socket_client($socketUrl, $errno, $errstr, 30); $retMsg=""; if (!$fp) { //echo "$errstr ($errno)<br /> "; return false; }else{ $in = "<?xml version='1.0' encoding='UTF-8'?>"; $in .= "<Message>"; $in .= "<TranCode>".$tranCode."</TranCode>"; $in .= "<MsgContent>".$notifyMsg."</MsgContent>"; $in .= "</Message>"; fwrite($fp, $in); while (!feof($fp)) { $retMsg =$retMsg.fgets($fp, 1024); } fclose($fp); } //解析返回xml $dom = new DOMDocument; $dom->loadXML($retMsg); $retCode = $dom->getElementsByTagName('retCode'); $retCode_value = $retCode->item(0)->nodeValue; $errMsg = $dom->getElementsByTagName('errMsg'); $errMsg_value = $errMsg->item(0)->nodeValue; $signMsg = $dom->getElementsByTagName('signMsg'); $signMsg_value = $signMsg->item(0)->nodeValue; if($retCode_value != ''){ //echo "交易返回码:".$retCode_value."<br>"; //echo "交易错误信息:" .$errMsg_value."<br>"; return false; }else{ $arr = preg_split("/|{1,}/",$srcMsg); $pay_id = $arr[1]; $action_note = base64_decode($arr[16]); // 完成订单。 order_paid($pay_id, PS_PAYED, $action_note); //告诉用户交易完成 return true; } ///////////////// respond END /////////////// } }
* 交通银行语言文件 * by: Reson www.111cn.net * 2014/03/31 */
$_LANG['bankcomm_desc'] = '交通银行在线支付'; $_LANG['pay_button'] = '交通银行支付';
|
原文件址:http://www.daixiaorui.com/read/80.html
原文下载:http://file.111cn.net/upload/2014/4/13962827995368.zip
相关文章
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- 这篇文章主要介绍了JS创建Tag标签的方法,结合具体实例形式分析了javascript动态操作页面HTML元素实现tag标签功能的步骤与相关操作技巧,需要的朋友可以参考下...2017-06-15
- 这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了解决vue字符串换行问题(绝对管用),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-06
- 这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25