php版清除html标签代码片段

php版清除html标签代码片段

$content = preg_replace("/<script[sS]*?</script>/i","",$content,3); //第四个参数中的3表示替换3次,默认是-1,替换全部
$content = preg_replace("/<style[sS]*?</style>/i","",$content,-1);
$content = preg_replace("/<iframe[sS]*?</iframe>/i","",$content,-1);
$content = preg_replace("/<input.*?/>/i","",$content,-1);
$content = preg_replace("/<!--.*?-->/si","",$content,-1);
$content = preg_replace("/<([a-zA-Z]+)[^>]*>/","<1>",$content,-1);//过滤所有html标签的属性

jq图片连续滚动代码jQuery-jcMarquee.js

本代码支持同页面多个滚动效果.

需引入jquery-1.7.2.min.js

jQuery-jcMarquee.js代码

;(function($){
$.fn.jcMarquee = function(options) {
var defaults = {
'marquee':'x',
'margin_bottom':'0',
'margin_right':'0',
'speed':'10'
};
var options = $.extend(defaults,options);
return this.each(function() {
var $marquee = $(this),
$marquee_scroll = $marquee.children('ul');
$marquee_scroll.append("<li class='clone'>"+"</li>");
$marquee_scroll.find('li').eq(0).children().clone().appendTo('.clone');
var $marquee_left = $marquee_scroll.find('li');
if (options.marquee == 'x') {
var x = 0;
$marquee_scroll.css('width','1000%');
$marquee_left.find('div').css({'margin-right':options.margin_right});
$marquee_left.css({'margin-right':options.margin_right});
function Marquee_x(){
$marquee.scrollLeft(++x);
_margin = parseInt($marquee_left.find('div').css('margin-right'));
if(x==$marquee_left.width()+_margin) { x = 0 };
};
var MyMar=setInterval(Marquee_x,options.speed);
$marquee.hover(function(){
clearInterval(MyMar);
},function(){
MyMar=setInterval(Marquee_x,options.speed);
});
}
if (options.marquee == 'y') {
var y = 0;
$marquee_scroll.css('height','1000%');
$marquee_left.find('div').css('margin-bottom',options.margin_bottom);
$marquee_left.css('margin-bottom',options.margin_bottom);
function Marquee_y(){
$marquee.scrollTop(++y);
_margin = parseInt($marquee_left.find('div').css('margin-bottom'));
if(y==$marquee_left.height()+_margin) { y = 0 };
};
var MyMar=setInterval(Marquee_y,options.speed);
$marquee.hover(function(){
clearInterval(MyMar);
},function(){
MyMar=setInterval(Marquee_y,options.speed);
});
};
});
};
})(jQuery)

使用方法:

* 相关参数

'marquee':'x', 设置滚动方向,提供 marquee:x 或 marquee:y

'margin_bottom':'0', 设置margin_bottom值

'margin_right':'0', 设置margin_right值

'speed':'10' 设置滚动速度,单位mm

* 重要提醒

#Marquee_x ul li, #Marquee_x ul li div { float:left;} // 横向滚动时必须让所有li左浮动

* HTML结构

<div id="Marquee">

<ul>

<li>

<div><img height="50" width="100" alt="图片1" /></div>

<div><img height="50" width="100" alt="图片2" /></div>

<div><img height="50" width="100" alt="图片3" /></div>

<div><img height="50" width="100" alt="图片4" /></div>

</li>

</ul>

</div>

添加js代码

<script>

$(function(){

$('#Marquee').jcMarquee({ 'marquee':'x','margin_right':'10px','speed':3 });

$('#Marquee_x').jcMarquee({ 'marquee':'x','margin_right':'10px','speed':3 });
});

</script>

解决ecshop后台频繁退出问题

ecshop后台有时候会自动登出,而且还会很频繁,频繁的自动登出就严重的影响到了后台使用。

首先我们可以通过 在后台登录时勾选保存登录来解决.

如果以上方法不能解决,可以尝试通过修改代码来解决.

打开/includes/lib_base.php

找到function real_ip()函数

修改成以下代码

function real_ip()
{
static $realip = NULL;

if ($realip !== NULL)
{
return $realip;
}

/*添加*/
if(isset($_COOKIE['real_ipd']) &amp;&amp; !empty($_COOKIE['real_ipd'])){
$realip = $_COOKIE['real_ipd'];
return $realip;
}
/*添加*/

if (isset($_SERVER))
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

/* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
foreach ($arr AS $ip)
{
$ip = trim($ip);

if ($ip != 'unknown')
{
$realip = $ip;

break;
}
}
}
elseif (isset($_SERVER['HTTP_CLIENT_IP']))
{
$realip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$realip = $_SERVER['REMOTE_ADDR'];
}
else
{
$realip = '0.0.0.0';
/*添加*/ setcookie(&quot;real_ipd&quot;, $realip, time()+36000, &quot;/&quot;); /*添加*/
}
}
}
else
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$realip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$realip = getenv('HTTP_CLIENT_IP');
}
else
{
$realip = getenv('REMOTE_ADDR');
}
}

preg_match(&quot;/[d.]{7,15}/&quot;, $realip, $onlineip);
$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';

return $realip;
}

可以直接用上面的代码覆盖,记得提前备份.

Discuz管理员密码重置方法

本文是通过修改DZ中UC创始人密码的方法,间接修改DZ管理员密码的,方法操作简单,只需ftp下载文件修改即可。

先改UC创始人的密码
修改UC配置文件 /uc_server/data/config.inc.php
对应两行换掉

define('UC_FOUNDERPW', '636822edaa353665147896b9061edc4b');
define('UC_FOUNDERSALT', 'p5j8K5');

密码为 123654

替换完成后访问UC目录,默认为/uc_server
进入后即可修改管理员密码了!

请注意是修改DZ管理员密码,而不是修改DZ创始人密码,当然创始人密码也是要修改的,为了安全!

js错误Uncaught TypeError: XXX is not a function解决方法及原因

起因:

在对select进行onchange操作时,无法执行函数,一直报错:Uncaught ReferenceError: XXX is not defined at HTMLSelectElement.onchange

经过排查,发现并无错误。

因为之前一直是正常使用的,突然不行,考虑是不是兼容问题。

通过多方查找,最后锁定原因

form 表单中方法的名称与 id 或者 name 重复导致

通过修改一下函数名或者id名解决本例错误。

参考阅读:

https://blog.csdn.net/shaotaiban1097/article/details/102857577

https://blog.csdn.net/u011870547/article/details/52765811

 

linux系统中使用certbot实现自动申请ssl证书

安装certbot客户端
[*****]wget https://dl.eff.org/certbot-auto
[*****]chmod a+x certbot-auto

生成证书
[*****]./certbot-auto certonly --email 123456@qq.com --agree-tos --webroot -w /var/www/html/ -d aaa.com -d www.aaa.com
证书地址 /etc/letsencrypt/live/aaa.com/
fullchain.pem privkey.pem

证书续签
[*****]./certbot-auto renew

nginx + frp 反向代理出现 502 Bad Gateway 错误

其实是nginx反向代理问题

现象:

frp服务器正常

frp客户机正常

两者nginx都正常,经过简单重启无效。

无法解决问题。

frp客户机上通过frp后的网站使用域名访问一直出现 502 Bad Gateway 错误。

但在frp客户机上通过本地ip可以正常访问。

 

通过网站查询获取解决方法

原因:nginx缓冲区太小问题,无法正常进行反代理。

只需要修改client_header_buffer_size和client_body_buffer_size的大小即可。

我是用的宝塔面板,在nginx的管理中修改以上两个配置即可。

 

扩展阅读:

https://www.cnblogs.com/jkko123/p/6294585.html

https://www.cnblogs.com/jpfss/p/10244608.html

CSS3使用animation 属性设置特效例子

 

Internet Explorer 10、Firefox 以及 Opera 支持 animation 属性。

Safari 和 Chrome 支持替代的 -webkit-animation 属性。

注释:Internet Explorer 9 以及更早的版本不支持 animation 属性。

 

div{
animation:xz 1s linear infinite ;//infinite为无限循环,可修改为数字次数

}
@keyframes xz{
from {transform:rotate(0deg);}
to{transform:rotate(360deg);}
}

 

div{
animation: load 0.5s infinite alternate;
}
@keyframes load {
0% {
box-shadow: inset 0px 0px 10px 5px rgba(255, 255, 255, 1), 0px 0px 10px 3px rgba(251, 207, 14, 0.5);
}
100% {
box-shadow: inset 0px 0px 10px 5px rgba(255, 255, 255, 1), 0px 0px 20px 3px rgba(251, 207, 14, 1);
}
}

 

 

原生JS实现增加删除class(addClass,removeClass,toggleClass)

来源于网络.

 

 

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.night-mode{
background:#383838;
color:#888888;
}
</style>

<script type="text/javascript"><br>//判断样式是否存在
function hasClass(ele, cls) {
return ele.className.match(new RegExp("(s|^)" + cls + "(s|$)"));
}
//为指定的dom元素添加样式
function addClass(ele, cls) {
if (!this.hasClass(ele, cls)) ele.className += " " + cls;
}
//删除指定dom元素的样式
function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
var reg = new RegExp("(s|^)" + cls + "(s|$)");
ele.className = ele.className.replace(reg, " ");
}
}
//如果存在(不存在),就删除(添加)一个样式
function toggleClass(ele,cls){
if(hasClass(ele,cls)){
removeClass(ele, cls);
}else{
addClass(ele, cls);
}
}
//调用
function toggleClassTest(){
var ele = document. getElementsByTagName('body')[0];
toggleClass(ele,"night-mode");
}
</script>
</head>

<body>
<div style = "width:250px;height:100px;">
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
<p>这是一段文字 </p>
</div>
<input type = "button" value = "变黑" onclick = "toggleClassTest();" />
</body>
</html>