Yii 2-WangEditorWidgetアップロード後のデータベースフィールドのフォーマット

10155 ワード

/**
 *            ,          ,            
 */
public function formatContent($content, $type = 'insert')
{
    $imgUrlPrefix = rtrim(Yii::$app->params['cdn_url_prefix'], '/');
    $urlData = parse_url($imgUrlPrefix);
    $host = $urlData['host'];
    $scheme = $urlData['scheme'];

    //        
    if($type == 'insert'){
        //  js  
        $pattern = "//i";
        $content = preg_replace($pattern, '', $content);
        //    
        $pattern = "/<style[\s\S]*?<\/style>/i";
        $content = preg_replace($pattern, '', $content);
        // img             
        $pattern ="/<((?!img)[a-z][a-z0-9]*)[^>]*?(\/?)>/i";
        $content = preg_replace($pattern,'<$1$2>', $content);

        //  word font  
        $pattern = "/<font[\s\S]*?>([\s\S]*?)<\/font>/i";
        $content = preg_replace($pattern, '$1', $content);
        //   font      
        $pattern = "/<\/font>|<font[\s\S]*?>/";
        $content = preg_replace($pattern, '', $content);

        //  word xml  
        $pattern = "/<!--\[if gte mso 9\]>[\s\S]*?<!\[endif\]-->/";
        $content = preg_replace($pattern, '', $content);

        //   div    
        $pattern = "/<\/div>|<div[\s\S]*?>/";
        $content = preg_replace($pattern, '', $content);

        //   p  
        $pattern = "/<p><br><\/p>|<p><\/p>/";
        $content = preg_replace($pattern, '', $content);

        //          , p    
        $pattern = "/<\/p>((?!<p>)[\s\S]+?)<p>/";
        $content = preg_replace($pattern, "</p><p>$1</p><p>", $content);

        //          , p    
        $pattern = "/<\/p>((?!<p>)[\s\S]+?)$/";
        $content = preg_replace($pattern, "</p><p>$1</p><p>", $content);

        //         
        $content = strip_tags($content, '<p><img><br>');
    }


    //    ,       ,    
    $pattern =  '/<img .*?src=[\"|\'](.*?)[\"|\'].*?\/?>/i';
    if(preg_match_all($pattern, strip_tags($content,'<img>'), $matches) > 0)
    {
        if($type == 'insert'){
            foreach($matches[1] as $key=>$value){
                $urlInfo = parse_url($value);
                if($urlInfo['scheme']."://".$urlInfo['host'] == $scheme.'://'.$host){
                    $replace = str_replace($imgUrlPrefix, '', $matches[0][$key]);
                    $content = str_replace($matches[0][$key], $replace, $content);
                }else{
                    $content = str_replace($matches[0][$key], '', $content);
                }
            }
           
            $content = preg_replace('/title\s*=\s*[\"|\'].*?[\"|\']/', '', $content);
        }elseif($type == 'detail'){
            foreach($matches[1] as $value){
                if(substr($value, 0 , 1) !== '/'){
                    $replace = $imgUrlPrefix.'/'.$value;
                }else{
                    $replace = $imgUrlPrefix.$value;
                }

                $content = str_replace($value, $replace, $content);
            }
        }
    }

    //      src       img
    $img_preg = "/<img(?![^<>]*?src[^<>]*?>).*?>/i";
    preg_match_all($img_preg,$content,$match);
    if (isset($match[0]) && count($match[0]))
    {
        foreach ($match[0] as $item) {
            $content=str_replace( $item,'',$content);
        }
    }
    return $content;
}</pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC WAP    -->
                    <div id="SOHUCS" sid="1281148600587403264"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js">
                    
                     
                
興味があるかもしれません
  • 旗正ルールエンジンのダウンロードページについて、弾窓をローカルディレクトリに保存する必要がある問題
    どうしてそうする必要があるのか
    jsp ハイパーリンク ファイルのダウンロード ウィンドウ
  • 【Spark九十八】Standalone Cluster Modeでのリソーススケジューリングソース分析
    bit1129
    cluster
  • linux上の独立インストール配置spark
    daizj
    linux インストール spark 1.4 配置
  • Javaバイトコードの解析一
    周凡楊
    java バイトコード javap
  • JAva各種ガジェットコード
    g21121
    java
  • FineReportレポートの設計を加速させるいくつかの心得
    Aさんは振り回さない
    finereport
  • mysql linuxの起動と停止
    塀の上に草が1本ある
  • Springでのトランザクション管理の概要
    aijuans
    spring トランザクション管理
  • アルファベットで分類:
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z その他
    トップページ -
    私たちについて -
    構内検索 -
    Sitemap -
    権利侵害苦情
    著作権すべてのIT知識ベースCopyRight© 2000-2050 IT知識ベースIT 610.com , All Rights Reserved.
    京ICP備09083238号