PHP 正则过滤 html 标签、空格、换行符的代码 (文章格式化)

$str=preg_replace("/\s+/", " ", $str); //过滤多余回车 
$str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格) 

$str=preg_replace("/<\!--.*?-->/si","",$str); //注释 
$str=preg_replace("/<(\!.*?)>/si","",$str); //过滤DOCTYPE 
$str=preg_replace("/<(\/?html.*?)>/si","",$str); //过滤html标签 
$str=preg_replace("/<(\/?head.*?)>/si","",$str); //过滤head标签 
$str=preg_replace("/<(\/?meta.*?)>/si","",$str); //过滤meta标签 
$str=preg_replace("/<(\/?body.*?)>/si","",$str); //过滤body标签 
$str=preg_replace("/<(\/?link.*?)>/si","",$str); //过滤link标签 
$str=preg_replace("/<(\/?form.*?)>/si","",$str); //过滤form标签 
$str=preg_replace("/cookie/si","COOKIE",$str); //过滤COOKIE标签 

$str=preg_replace("/<(applet.*?)>(.*?)<(\/applet.*?)>/si","",$str); //过滤applet标签 
$str=preg_replace("/<(\/?applet.*?)>/si","",$str); //过滤applet标签 

$str=preg_replace("/<(style.*?)>(.*?)<(\/style.*?)>/si","",$str); //过滤style标签 
$str=preg_replace("/<(\/?style.*?)>/si","",$str); //过滤style标签 

$str=preg_replace("/<(title.*?)>(.*?)<(\/title.*?)>/si","",$str); //过滤title标签 
$str=preg_replace("/<(\/?title.*?)>/si","",$str); //过滤title标签 

$str=preg_replace("/<(object.*?)>(.*?)<(\/object.*?)>/si","",$str); //过滤object标签 
$str=preg_replace("/<(\/?objec.*?)>/si","",$str); //过滤object标签 

$str=preg_replace("/<(noframes.*?)>(.*?)<(\/noframes.*?)>/si","",$str); //过滤noframes标签 
$str=preg_replace("/<(\/?noframes.*?)>/si","",$str); //过滤noframes标签 

$str=preg_replace("/<(i?frame.*?)>(.*?)<(\/i?frame.*?)>/si","",$str); //过滤frame标签 
$str=preg_replace("/<(\/?i?frame.*?)>/si","",$str); //过滤frame标签 

$str=preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$str); //过滤script标签 
$str=preg_replace("/<(\/?script.*?)>/si","",$str); //过滤script标签 
$str=preg_replace("/javascript/si","Javascript",$str); //过滤script标签 
$str=preg_replace("/vbscript/si","Vbscript",$str); //过滤script标签 
$str=preg_replace("/on([a-z]+)\s*=/si","On\\1=",$str); //过滤script标签 
$str=preg_replace("/&#/si","&#",$str); //过滤script标签,如javAsCript:alert(

 

做个记录 symfony/dom-crawler 使用入门

做个记录

symfony/dom-crawler 使用入门

> composer require "symfony/dom-crawler"
<?php
use Symfony\Component\DomCrawler\Crawler;
require 'vendor/autoload.php';

$html = <<<'HTML'
<!DOCTYPE html>
<html>
    <body>
        <p class="message">Hello World!</p>
        <p>Hello Crawler!</p>
    </body>
</html>
HTML;

$crawler = new Crawler($html);

foreach ($crawler as $domElement) {
    var_dump($domElement->nodeName);
}

http://symfony.com/doc/current/components/dom_crawler.html

https://segmentfault.com/q/1010000009019518

不使用 PHP 内置函数 使用方法写一个字符串反转的函数

<?php
function str_rev($str){
    for($i = 0;true;$i++){
        if(!isset($str[$i])){
            break;
        }
    }
    $return = "";
    for($j=$i-1;$j>=0;$j--){
        $return .= $str[$j];
    }
    return $return;
}
echo str_rev('abcdefg');

输出:

gfedcba

重点:字符串可以当数组来使用。

字符串中的字符可以通过一个以0为开始的,用类似数组结构中的方括号包含对应的数字来查找和修改,比如 $str[42], 可以把 字符串想像数组 。

跳出循环,使用 isset() 来判断。

不使用 array_merge() 实现多个数组的合并

<?php
function array_mer(){
    $return = [];
    $array = func_get_args();
    foreach($array as $arr){
        if(is_array($arr)){
            foreach($arr as $val){
                $return[] = $val;
            }
        }
    }
    return $return;
}
var_dump(array_mer([1],[1,2],[3,5]));

输出:

array(5) {
  [0]=>
  int(1)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(5)
}

重点:func_get_args() 动态获取参数的函数

PHP 分布式中 Redis 实现 Session 共享

找到配置文件php.ini,修改为下面内容,保存并重启服务

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

直接在代码中加入以下内容:

ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379");

测试:

<?php
//ini_set("session.save_handler", "redis");
//ini_set("session.save_path", "tcp://127.0.0.1:6379");

session_start();

//存入session
$_SESSION['class'] = array('name' => 'toefl', 'num' => 8);

//连接redis
$redis = new redis();
$redis->connect('127.0.0.1', 6379);

//检查session_id
echo 'session_id:' . session_id() . '<br/>';

//redis存入的session(redis用session_id作为key,以string的形式存储)
echo 'redis_session:' . $redis->get('PHPREDIS_SESSION:' . session_id()) . '<br/>';

//php获取session值
echo 'php_session:' . json_encode($_SESSION['class']);

 

解决 “噢,没有这个文件,请重新检查文件名,然后再试。谢谢”

编辑主题时提示:噢,没有这个文件,请重新检查文件名,然后再试。谢谢

因使用 lnmp 一键安装包所致,进行如下操作:

找到服务器上的 php.ini 的位置,可以用 phpinfo() 函数查看该文件的位置,找到后编辑该文件,

vi /usr/local/php/etc/php.ini

找到第314行或附近的disable_functions按 i 键进入编辑模式,将其值里的 scandir 这个函数去掉,记得逗号也要去掉,再esc退出编辑模式,输入:wq 保存退出,之后重启你的nginx服务和php服务,或直接重启的lnmp

lnmp restart

一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。编写程序,输出第n次落地时,小球落下弹起共经过多少米。

一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。编写 PHP 程序,输出第 n 次落地时,小球落下弹起共经过多少米。

<?php
function rebouns($n) {
    $links = array();
    $begin = 100;
    for($i=1; $i<=$n; $i++){
        if($i==1 || $i==2){
            $links[$i] = 100;
        }else{
            $links[$i] = $links[$i-1]/2;
        }
        $sum = array_sum($links);
        echo "第".$i."次落地,经过距离为".$sum."<br />";
    }
}
rebouns(5);

输出结果为:

第1次落地,经过距离为100
第2次落地,经过距离为200
第3次落地,经过距离为250
第4次落地,经过距离为275
第5次落地,经过距离为287.5

Please compose a functio thar meets the following requirement

We are a php shop and prefer you answering in php,

But you might answer in any other languages in case you are not familiarwith it, we can read C#, Java, C++, Perl, Ruby, etc.

Requirement:

The input would be an English sentence as a string, please transforms it as described below and return a new…

The sentence would contains only alphabet(a-z and A-Z) and space, each word would be separated by exactly…

space. There would be no spaces before and after the sentence.

Please return the string with each word spelled in reverse, however, the position of the capitalization of each …

should stay the same for each word.

For example:

Input: This is an Apple on eBay

Output: sihT si na elppA no yaBe

<?php
function rev($arr) {
    $arr = explode(" ",$arr);
    foreach($arr as &$v){
        $v = strrev($v);
    }
    return implode(" ",$arr);
}
$arr = "This is an Apple on eBay";
$res = rev($arr);
print_r($res);

输出为:sihT si na elppA no yaBe