2017-05-06 68 views
1

下面是函數PHP函數來替換CSS類名

function replaceclass($html) { 
    return preg_replace_callback('/class="([^"]+)"/', function($m) { 

    if(strpos($m[1], "container") !== false) { 
     $m[0] = preg_replace("/\s*container\s*/",'product-description-table',$m[0],1); 
     } 

    if(strpos($m[1], "content-border") !== false) { 
    $m[0] = preg_replace("/\s*content-border\s*/",'product-content-border',$m[0],1); 
     } 

// add as many if conditions with class replacement names as you like 
// if(strpos($m[1], "class-name") !== false) { 
//  $m[0] = preg_replace("/\s*class-name\s*/",'new-class-name',$m[0],1); 
//  } 
// add as many if conditions with class replacement names as you like 

    return $m[0]; 

     }, $html); 
} 

這是個教學班,只有一類在其中工作的偉大

之前

<table class="container">

<table class="product-description-table">

但每當一個元素有多個類,下面的格式錯誤發生

之前

<table class="container c8">

AFTE [R

<table class="product-description-tablec8">

誰能想到一個簡單的方法來修改這個函數來探測二次類,添加適當的間距,<table class="product-description-table c8">

回答

2

問題是,您正在使用正則表達式中的\s*模式刪除類中的所有空白。

代替匹配空格,使用\b來匹配單詞邊界。

$m[0] = preg_replace("/\bcontainer\b/",'product-description-table',$m[0],1); 
+0

你是親,謝謝:) – bbruman