Как обрезать ненужные пробелы в 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
функция, но это только склеивает вещи, я не знаю, будет ли это обрезать ненужное пространство. Что я должен использовать?
Вместо этого вы можете использовать массив (в результате, на мой взгляд, гораздо более читаемый код):
$classes = array('clear');
if ($result_1) {
$classes[] = 'first';
}
if ($result_2) {
$classes[] = 'second';
}
$class_out = implode(' ', $classes);
отделка() удаляет пробелы с начала и с конца строки, которую вы хотите заменить все несколько пробелов только одним.
$class_out = trim('clear' . ' ' .$result1. ' ' .$result2);
$class = preg_replace('!\s+!', ' ', $class_out);
В вашем php-коде установите пробелы в переменной $ result1 и $ result2
<?php
$result1 = ($result_1) ? ' first' : '';
$result2 = ($result_2) ? ' second' : '';
$class_out = trim('clear' . $result1 . $result2);
return '<span class="'.$class_out.'"></span>';
?>
И теперь не осталось лишнего места 🙂