Как преобразовать атрибут HTML "class" в css-селектор, используя язык php? - PullRequest
0 голосов
/ 19 января 2019

Как преобразовать строку с классом в селектор, даже если она содержит много пробелов между классами?

Входные данные:

$html_classes = 'class1    class2  class3 ';

Необходимый результат:

.class1.class2.class3

Этот пример не подходит, так как между классами может быть много пробелов

$result = '.' . str_replace( ' ', '.', $html_classes )

Ответы [ 5 ]

0 голосов
/ 19 января 2019

Вы можете сделать это без дополнительной обрезки или объединения. Найдите непробельные символы, заключенные в ноль или более пробелов, и замените эти совпадения непропускной частью совпадения, которому предшествует точка.

$html_classes = preg_replace('/\s*(\S+)\s*/', '.$1', $html_classes);
0 голосов
/ 19 января 2019

Мое предложение:

<?php
$html_classes = 'class1    class2  class3 ';
$result = '.' . preg_replace('/\s+/', '.', trim($html_classes));
echo $result;
?>

Регулярные выражения:

  • \ s - символ пробела.

  • + означает одно или несколько вхождений.

PHP (от http://php.net):

0 голосов
/ 19 января 2019

Сначала замените все лишние пробелы на синглы.И выполните trim (), чтобы убрать пробелы в начале и в конце.

$html_classes = 'class1    class2  class3 ';
$html_classes = trim(preg_replace('/\s+/',' ',$html_classes));
$result = '.' . str_replace(' ','.',$html_classes);
0 голосов
/ 19 января 2019

Ответ так же прост, как один вызов замены на основе регулярных выражений:

<?php
$input = 'class1    class2  class3  ';
$output = preg_replace('/\s*([\w\d]+)\s*/', '.${1}', $input);
print_r($output);

Вывод очевидно:

.class1.class2.class3
0 голосов
/ 19 января 2019

Попробуйте это:

<?php
$html_classes = 'class1    class2  class3 ';
$parts = explode(" ", $html_classes);
$results = "";
foreach($parts as $c){
    if($c != ""){
        $results .= "." . $c;
    }
}
echo $results;
?>

Результаты, которые я получил:

.class1.class2.class3

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...