Я застрял, пытаясь создать функцию в PHP, и мне нужна помощь от вас, ребята.
Мне нужно найти способ разбить все строки CSS на массивы, а затем найти подходящие элементы и объединить их в группы. Объяснять немного сложно, поэтому я напишу это ниже.
=============================================== ============
Первый -> (Стандартный CSS)
.className1 {
font-family: 'Helvetica';
color: #000;
text-align: center;
}
.className2 {
font-family: 'Arial';
color: #000;
text-align: left;
}
.className3 {
color: #000;
text-align: center;
}
.className4 {
text-align: center;
}
Итак, теперь давайте предположим, что вы нажимаете кнопку HTML для сортировки CSS, я хотел бы, чтобы функция PHP возвращала этот CSS, но организовал и отсортировал, как это:
=============================================== ============
Второй -> (Что мне нужно)
.className1, .className2, .className3 { color: #000; }
.className1, .className3, .className4 { text-align: center; }
.className1 { font-family: 'Helvetica'; }
.className2 { font-family: 'Arial'; text-align: left; }
=============================================== ============
Это то, что у меня есть (прошу прощения за лучшие практики)
$source = $_POST['source'];
$source_lines = preg_split("/}/", $source);
$source_lines = array_filter(array_map('trim', $source_lines));
function contains_CSS_Style($str, $arr) {
foreach($arr as $a) {
if (stripos($str,$a) !== false)
{
$same_array[] = $a;
}
}
return array($str, $same_array);
}
foreach ($source_lines as $value) {
$selection = explode('{', $value);
$css_name = $selection[0];
$css_line = $selection[1];
$css_line = str_replace(':', ':', $css_line);
$css_style = explode(';', $css_line);
foreach ($css_style as $style) {
$all_styles[] = $style;
}
}
$myArray = array_filter(array_map('trim', $all_styles));
$myArray = array_unique($all_styles);
foreach ($source_lines as $value) {
$name = contains_CSS_Style($value, $myArray)[0];
echo "yes! " . $name . "</br></br>";
foreach (contains_CSS_Style($value, $myArray)[1] as $value) {
echo "the word is ==== " . $value . "</br>";
}
echo "</br>";
}
Это то, что отражено.
yes! .className1 { font-family: 'Helvetica'; color: #000; text-align: center;
the word is ==== font-family: 'Helvetica'
the word is ==== color: #000
the word is ==== text-align: center
yes! .className2 { font-family: 'Arial'; color: #000; text-align: left;
the word is ==== color: #000
the word is ==== font-family: 'Arial'
the word is ==== text-align: left
yes! .className3 { color: #000; text-align: center;
the word is ==== color: #000
the word is ==== text-align: center
yes! .className4 { text-align: center;
the word is ==== text-align: center
Если вы, ребята, можете помочь мне сделать это, я был бы очень признателен.