Задать вопрос
alexbruni
@alexbruni

PHP — как обрезать каждую строку текста после первой запятой?

Имеется текст:
Шапка (бывает) красная, белая, черная <br>
Свитер (бывает) зеленый <br>
Шарф (бывает) белый, синий <br>


и так далее...

Необходимо обрезать текст каждой строки после первой запятой, и до тега br

В итоге должно получиться:
Шапка (бывает) красная <br>
Свитер (бывает) зеленый <br>
Шарф (бывает) белый <br>


Мучаюсь уже 2 часа над этим простым вопросом...
  • Вопрос задан
  • 3617 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
alexbruni
@alexbruni Автор вопроса
Нашел решение:

<?php 
$test = "Шапка (бывает) красная, белая, черная <br>
Свитер (бывает) зеленый <br>
Шарф (бывает) белый, синий <br>";


$test = preg_replace('~\,.*?\<br>~','<br>',$test);
echo $test;
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Чуть проще предыдущего ответа.
function do_some($src){
	$data = explode("<br>", $src);
	$new_data = array( );
	$item;

	for ($i = 0; $i < count($data); $i++) { 
		if(empty($data[$i])) continue;

		$item = explode(",", $data[$i]);
		$item = $item[0];

		array_push($new_data, $item);
	}

	return implode("<br>", $new_data);
}
//...
echo do_some("Шапка (бывает) красная, белая, черная <br>Свитер (бывает) зеленый <br>Шарф (бывает) белый, синий <br>");
Ответ написан
Небольшой update)
function do_some($src){
	$data = explode("<br>", $src);
	$new_data = array( );
	$item;

	$new_data = array_map(function($str){
		$item = explode(",", $str);
		$item = $item[0];

		return $item;
	}, $data);

	return implode("<br>", $new_data);
}
Ответ написан
DrNemo
@DrNemo
Ну и мои 5 копеек:
$text = "Шапка (бывает) красная, белая, черная <br>Свитер (бывает) зеленый <br>Шарф (бывает) белый, синий <br>";
$f = function($val){
	$items = explode(',', $val);
	return $items[0];
};
$t = implode(array_map($f,explode('<br>', $text)), '<br>');
print_r($t);

Думаю пошустрее регулярок будет)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы