trim — PHP обрезает ненужное пространство в классе

Как обрезать ненужные пробелы в PHP *

Проблема в этом. У вас есть 2 предложения if, которые выводят строку, или пустую строку, и мне нужно поместить их в класс позже:

<?php
$result1 = ($result_1) ? 'first' : '';
$result2 = ($result_2) ? 'second' : '';

$class_out = trim('clear' . ' ' .$result1. ' ' .$result2);

return '<span class="'.$class_out.'"></span>';
?>

Сейчас, $result_1 а также $result_2, можно установить или нет, поэтому возможности вывода должны быть

<span class="clear first second"></span>
<span class="clear first"></span>
<span class="clear second"></span>
<span class="clear"></span>

Но вместо этого они

<span class="clear first second"></span>
<span class="clear first"></span>
<span class="clear  second"></span><!-- EXTRA SPACE-->
<span class="clear"></span>

Это не вина, но выглядит уродливо. Зачем иметь дополнительное место, если его можно избежать? Вопрос в том, как? я нашел implode функция, но это только склеивает вещи, я не знаю, будет ли это обрезать ненужное пространство. Что я должен использовать?

0

Решение

Вместо этого вы можете использовать массив (в результате, на мой взгляд, гораздо более читаемый код):

$classes = array('clear');
if ($result_1) {
$classes[] = 'first';
}
if ($result_2) {
$classes[] = 'second';
}

$class_out = implode(' ', $classes);
3

Другие решения

отделка() удаляет пробелы с начала и с конца строки, которую вы хотите заменить все несколько пробелов только одним.

$class_out = trim('clear' . ' ' .$result1. ' ' .$result2);
$class = preg_replace('!\s+!', ' ', $class_out);
2

В вашем php-коде установите пробелы в переменной $ result1 и $ result2

<?php
$result1 = ($result_1) ? ' first' : '';
$result2 = ($result_2) ? ' second' : '';

$class_out = trim('clear' . $result1 . $result2);

return '<span class="'.$class_out.'"></span>';
?>

И теперь не осталось лишнего места 🙂

1
По вопросам рекламы [email protected]