js正则相配table,img及去除各类标签难题

strpos() – 查找字符串首次出现的位置

        //获取公示栏内容
         s = "$row.detail$";
         mainContent =s;

         //如果有多个table使用下面注释的正则只会匹配成一个table
         //var tabReg = /<table[^>]*>((?!table).)*<\/table>/gi;
        //匹配单个table
         var tabReg = /<table[^>]*>\s*(<tbody[^>]*>)?(\s*<tr[^>]*>[\s\S]*?<\/tr>\s*)*(<\/tbody>)?\s*<\/table>/gi;
         var tabMatch = tabReg.test(s);

         var tabMatchContentArray = s.match(tabReg);

         if(tabMatch)
         {

            mainContent = s.replace(tabReg,"#");
         }

         //对img标签进行匹配
         var imgReg = /<img.*?(?:>|\/>)/gi;

         imgMatchContentArray = s.match(imgReg);

         if(imgReg.test(s))
         {
            //将img标签替换为*
            mainContent =  mainContent.replace(imgReg,"*");
         }

         //处理html标签
         mainContent =  mainContent.replace(/&nbsp;/gi," ");

         var pReg1 = /<p>/gi;
         var pReg2 = /<\/p>/gi;
         mainContent =  mainContent.replace(pReg1,"").replace(pReg2,"<br />");
         //下面的htmlReg1 ,htmlReg2可以匹配任意标签
//         var htmlReg1 =/<[^>]+>/gi;
//         var htmlReg2 =/<(.+?)[\s]*\/?[\s]*>/gi;
//         
//         mainContent = mainContent.replace(htmlReg1,"").replace(htmlReg2,"");

         //mainContent = mainContent.replace(/&/gi,"<p>").replace(/@/gi,"</p>");



        var pageIndex = 1;
        var size = 500;

        var tableContentArray = mainContent.split("#");




        var array = []; //存放以table分割后的数组中每个数组可以分作几页

        var arrayIndex = []; //存放table在内容中的索引

        var len =0;
        for(var i=0;i<tableContentArray.length;i++)
        {
            var con = tableContentArray[i];

            len += con.length;

            arrayIndex[i] = len;

            array[i] = Math.ceil(con.length /size);
        }


        var tableIndexArray = [];//存放table内容页码数

        var sum = 1;

        for(var j=0;j<array.length-1;j++)
        {

            sum += array[j];
            tableIndexArray[j] = sum;
        }


        var currentPageContent = mainContent.substr((pageIndex-1)*size,size);


        if(tableIndexArray.indexOf(pageIndex) >= 0)
        {
            currentPageContent = tabMatchContentArray[tableIndexArray.indexOf(pageIndex)];
        }


        if(currentPageContent.indexOf("#")!= -1)
        {

            var beginToCurrentPageContent = mainContent.substr(0,pageIndex*size);            
            var tabLastIndex = beginToCurrentPageContent.lastIndexOf("#");

            currentPageContent = currentPageContent.substr(0,tabLastIndex-(pageIndex-1)*size);

            //当前页是否有 * 获取最后一个 * 的位置 
            var indexOf = currentPageContent.indexOf("*");

            if(indexOf >= 0)
            {                  
                  //获取开始到当前页位置的内容 中的 * 的最后的下标 
                  var reCount = beginToCurrentPageContent.split("*").length - 1;

                  var contentArray = currentPageContent.split("*");

                  currentPageContent = replaceImgContent(contentArray,reCount,imgMatchContentArray);   
            }

        }
        else
        {

            //当前页是否有 * 获取最后一个 * 的位置 
            var indexOf = currentPageContent.indexOf("*");

            if(indexOf >= 0)
            {
                  //获取从开始位置到当前页位置的内容
                  var beginToCurrentPageContent = mainContent.substr(0,pageIndex*size);

                  //获取开始到当前页位置的内容 中的 * 的最后的下标 
                  var reCount = beginToCurrentPageContent.split("*").length - 1;

                  var contentArray = currentPageContent.split("*");

                  currentPageContent = replaceImgContent(contentArray,reCount,imgMatchContentArray);

            }

        }

       if(currentPageContent=="")
       {
            alert("页码数超过范围");
       }
       else
       { 
            document.getElementById("annouContent").innerHTML= currentPageContent;
       }


        /*  currentArray:当前页以 * 分割后的数组
            replaceCount:从开始内容到当前页的内容 * 的个数
            matchArray : img标签的匹配的内容
        */
        function replaceImgContent(currentArray,replaceCount,matchArray)
        {

            var result = "";
            for(var i=currentArray.length -1,j = replaceCount-1 ;i>=1; i--)
            {   

               var temp = (matchArray[j] + currentArray[i]);

               result = temp + result;

               j--;
            }

            result = currentArray[0] + result ;

            return result;
        }

    </script>

正则: <(\s*)(?i:img)(\s)*(((?!<).(\n)*)*)((>)|(/>)|(</(\s*)(?i:img)>))

preg_match_all —
执行一个全局正则表达式匹配

 代码如下

strrpos() 函数查找字符串在另一字符串中最后一次出现的位置(区分大小写)。

 

示例

String str = "<a href=\"http://finance.qq.com/a/20161110/033628.htm\" target=\"_blank\" class=\"pic\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/772348163_150120/0\" alt=\"财政部设立个人所得税处 税改将加快进度\"></a><div class=\"info\">\n" +      "<h3><a href=\"http://finance.qq.com/a/20161110/033628.htm\" target=\"_blank\">财政部设立个人所得税处 税改将加快进度</a></h3>\n" +      "<p>2016-11-10 17:01:01</p>\n" +      "<p class=\"txt\">财联社10日讯,财政部近日调整了部分处室机构设置,单独设立个人所得税处。这或许意味着个税改革将加快进度。个人所得税原由税政司所得税处负责管理,此次调整中,原所得税处被拆分为企业所得税处和个人所得税处两个处。更多精彩内容欢迎搜索关注微信公众号:腾讯财经(financeapp)。</p>\n" +      "</div>\n" +      "</li>\n" +      "<li class=\"clearfix\">\n" +      "<a href=\"http://news.qq.com/a/20161110/037497.htm\" target=\"_blank\" class=\"pic\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/773289166_150120/0\" alt=\"“农妇太原派出所死亡案”一审宣判 值班主办警察获刑5年\"></a><div class=\"info\">\n" +      "<h3><a href=\"http://news.qq.com/a/20161110/037497.htm\" target=\"_blank\">“农妇太原派出所死亡案”一审宣判 值班主办警察获刑5年</a></h3>\n" +      "<p>2016-11-10 18:40:58</p>\n" +      "<p class=\"txt\">“农妇太原派出所死亡案”一审宣判 值班主办警察获刑5年</p>\n" +      "</div>\n" +      "</li>\n" +      "<li class=\"clearfix noPic\"><div class=\"info\">\n" +      "<h3><a href=\"http://news.qq.com/a/20161110/032227.htm\" target=\"_blank\">不明飞行器部件坠落缅甸山区,带有中文</a></h3>\n" +      "<div class=\"picMode\">\n" +      "<a href=\"http://news.qq.com/a/20161110/032227.htm\" class=\"picI\" target=\"_blank\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/772248566_200160/0\"></a><a href=\"http://news.qq.com/a/20161110/032227.htm\" class=\"picI\" target=\"_blank\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/772248567_200160/0\"></a><a href=\"http://news.qq.com/a/20161110/032227.htm\" class=\"picI\" target=\"_blank\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/772248568_200160/0\"></a>\n" +      "</div>\n" +      "<p>2016-11-10 16:22:59</p>\n" +      "</div></li>\n" +      "<li class=\"clearfix noPic\"><div class=\"info\">\n" +      "<h3><a href=\"http://news.qq.com/a/20161110/038603.htm\" target=\"_blank\">奇葩违建占通道 居民走“狗洞”回家</a></h3>\n" +      "<div class=\"picMode\">\n" +      "<a href=\"http://news.qq.com/a/20161110/038603.htm\" class=\"picI\" target=\"_blank\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/773387406_200160/0\"></a><a href=\"http://news.qq.com/a/20161110/038603.htm\" class=\"picI\" target=\"_blank\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/773387407_200160/0\"></a><a href=\"http://news.qq.com/a/20161110/038603.htm\" class=\"picI\" target=\"_blank\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/773387408_200160/0\"></a>\n" +      "</div>\n" +      "<p>2016-11-10 19:44:34</p>\n" +      "</div></li>\n" +      "<li class=\"clearfix\">\n" +      "<a href=\"http://news.qq.com/a/20161110/000832.htm\" target=\"_blank\" class=\"pic\"><img src=\"http://inews.gtimg.com/newsapp_ls/0/771270525_150120/0\" alt=\"河北救援6岁坠井男童超100小时 亲戚称井底没见到孩子踪影\"></a><div class=\"info\">\n" +      "<h3><a href=\"http://news.qq.com/a/20161110/000832.htm\" target=\"_blank\">河北救援6岁坠井男童超100小时 亲戚称井底没见到孩子踪影</a></h3>";
String s = str.replaceAll("<(\\s*)(?i:img)(\\s)*(((?!<).(\\n)*)*)((>)|(/>)|(</(\\s*)(?i:img)>))", "<!--IMAGE#0-->");

int preg_match_all ( string $pattern , string $subject [, array
&$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0
]]] )

<?php

strripos()
函数查找字符串在另一字符串中最后一次出现的位置(不区分大小写)。

 
$ext = ‘jpg|jpeg|gif|bmp|png’;//罗列图片后缀从而实现多扩展名匹配
$str = ‘<p><img title=”湛蓝天空” alt=”湛蓝天空”
onload=”ResizeImage(this,860)”
src=””
/></p><p><img title=”湛蓝天空” alt=”湛蓝天空”
onload=”ResizeImage(this,860)”
src=””
/></p><p><img title=”湛蓝天空” alt=”湛蓝天空”
onload=”ResizeImage(this,860)”
src=””
/></p>’;
 
 
$img_list = array(); //这里存放结果map
$img_list = img_match($str,$ext);
print_r($img_list); //查看结果变量
 
/*
* $str,要进行处理的内容
* $ext,要匹配的扩展名
*/
 
function img_match($str,$ext){
 
$list = array(); //这里存放结果map
$c1 =
preg_match_all(‘/<imgs.*?>/’,
$str, $m1); //先取出所有img标签文本
for($i=0; $i<$c1; $i++) {    //对所有的img标签进行取属性
$c2 =
preg_match_all(‘/(w+)s*=s*(?:(?:([“‘])(.*?)(?=2))|([^/s]*))/’,
$m1[0][$i], $m2); //匹配出所有的属性
for($j=0; $j<$c2; $j++) { //将匹配完的结果进行结构重组
$list[$i][$m2[1][$j]] = !empty($m2[4][$j]) ? $m2[4][$j]
: $m2[3][$j];
}
}
 
return $list;
}
 
?>

strstr() – 函数搜索字符串在另一字符串中的第一次出现,区分大小写。

 代码如下

效果如下

<?php
preg_match_all(“|<[^>]+>(.*)</[^>]+>|U”,
    “<b>example: </b><div align=left>this is a
test</div>”,
    $out, PREG_PATTERN_ORDER);
echo $out[0][0] . “, ” . $out[0][1] . “n”;
echo $out[1][0] . “, ” . $out[1][1] . “n”;
?>

图片 1

strpbrk(a,b)-字符串a中查找b的字符

如何获取伪静态url中的参数变量,已经对应的值。

再扯蛋一下,还是正则取指定字符中的内容

<?php

$text = 'This is a Simple text.';

// 输出 "is is a Simple text.",因为 'i' 先被匹配
echo strpbrk($text, 'mi');

// 输出 "Simple text.",因为字符区分大小写
echo strpbrk($text, 'S');
?>

比如说。你现在url的是这样的。/js/d1b3cid419299191rs好脚本

 代码如下

 strncasecmp() 函数比较两个字符串(不区分大小写)。

你的.htaccess文件会这样写rewirte规则 RewriteRule ^js/(.*)$
/index.php?m=Sell&a=index&g=$1 [QSA,PT,L]

$str = preg_match_all(‘/(original-title=).*?(>)/is’, $str,$array);

 

这样你就可以把g接收过来。

很简单吧。

 代码如下

$get = ‘d1b3cid419299191rs好脚本’;
$rs_pos = strpos($get,’rs’);
if($rs_pos !== false)
{
    $rs =
substr($get,$rs_pos);
    $rs = str_replace(‘rs’,”,$rs);
    $rs = strpos($rs,’/’)!==false ? substr($rs,0,strpos($rs,’/’)) :
$rs;
    $get = substr($get,0,$rs_pos);
}
echo ‘keywords=’.$rs;
echo ‘<br>’;
preg_match_all(‘/([a-z]*)([0-9]+)/’,$get,$m);
if($m)
{
        $k = $v = ”;
        $count = count($m[1]);
        for($i = 0; $i <= $count; $i++)
        {
            ${$m[1][$i]} = $m[2][$i];
            if(isset(${$m[1][$i]}))
            {   
                echo $m[1][$i].’=’.${$m[1][$i]};
                echo ‘<br>’;
            }
        }
}

结果:keywords=好脚本,d=1,b=3,cid=419299191

 

匹配文章中的图片

 

 代码如下

<?php
$con = file_get_contents(“”);
$pattern=”/<[img|IMG].*?src=[‘|”](.*?(?:[.gif|.jpg|.png]))[‘|”].*?[/]?>/”;
preg_match_all($pattern,$con,$match);
print_r($match);
?>

输出代码

Array
(
[0] => Array
(
[0] => <img
src=”” alt=””
/>
[1] => <img style=”display: block; margin-left: auto;
margin-right: auto;” title=””
src=”” alt=”2″
/>
[2] => <img style=”display: block; margin-left: auto;
margin-right: auto;”
src=””
alt=”875EA1C00E50B4542797E24FA6E7E1F2.jpg” />
)
[1] => Array
(
[0] =>
[1] =>
[2] =>
)
)

相关文章