Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779

Разделение тегов по запятой

05.12.2025, 00:59. Показов 747. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, нужен более лаконичный и самый менее нагружаемый вариант на память сервера чем этот что я сделал


В переменной $string будут такие теги и мне нужно каждый из них обернуть в теги <span> и вывести
у меня вариант вывода через массив, подскажите более красивый и лаконичный вариант, который будет делать тоже самое что и этот скрипт.

Нужен результат:
<span>Яблоко запеченное</span><span>Апельсиновый торт</span><span>Банановый джем</span>


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$string = "Яблоко запеченное, Апельсиновый торт, Банановый джем";
$array = explode(',', $string);
 
// print_r($array);
 
 
foreach ($array as $value) {
    echo "<span>" . trim(htmlspecialchars($value)) . "</span>";
}
 
?>
Добавлено через 1 час 50 минут
может есть какой то более короткий и быстрый вариант без foreach
главное получить один и то же результат

<span>Яблоко запеченное</span><span>Апельсиновый торт</span><span>Банановый джем</span>

и при этом чтобы скрипт был короче и быстрее.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2025, 00:59
Ответы с готовыми решениями:

Система тегов, облако тегов
Здравствуйте. Очень интересно знать как разработать и заставить функционировать &quot;систему тегов&quot;....

Нет пробела после запятой, точки с запятой
Доброго времени суток! Опять таки задачи с регулярными выражениями. Есть какой-то текст, нужно...

Отрезать цифру до запятой и после запятой в строке "1,44444,0".
Приветствую, имеется игровая база данных, так же имеется личный кабинет на сайте, в котором...

8
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
05.12.2025, 01:29
Цитата Сообщение от serauto79 Посмотреть сообщение
лаконичный и самый менее нагружаемый вариант на память
foreach по массиву нормально так оптимально шустро работает.
Насчёт памяти наверное имеет смысл что-то оптимизировать если строка где-то под сотню килобайт
... тогда оно и по времени чуть заметно ... если на 1000 раз
> php test.php
length of string 101374
-------
1.467774 f1 1000 times
-------
1.973633 f2 1000 times
-------
1.458984 f1 1000 times
-------
2.010742 f2 1000 times

под среднезагруженной виндой на самом дохлом core2duo,) с таким например:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
function f1($str) {
    $array = explode(',', $str);
    foreach ($array as $s)
        /*echo*/ '<span>'. trim($s). "<span>\n";
}
function f2($str) {
    $s = strtok($str, ',');
    do
        /*echo*/ '<span>'. trim($s). "<span>\n";
    while($s = strtok(','));
}
 
function bench($f, $arg, $cnt=1000) {
    $c=$cnt;
    $t = microtime(1);
    while ($c--)
        $f($arg);
    printf("-------\n%6f %s %d times\n", microtime(1) - $t, $f, $cnt);
}
 
$string = "Яблоко запеченное, Апельсиновый торт, Банановый джем";
 
$i = 10;
while ($i--)
    $string .= ', '. $string;
echo ' length of string ', strlen($string), "\n";
 
bench('f1', $string);
bench('f2', $string);
bench('f1', $string);
bench('f2', $string);
просто с этой строкой время или одинаковое или случайные расхождения
> php test.php
length of string 97
-------
0.004882 f1 2000 times
-------
0.003907 f2 2000 times
-------
0.002930 f1 2000 times
-------
0.004883 f2 2000 times


Добавлено через 10 минут
Цитата Сообщение от ft4l Посмотреть сообщение
2.010742 f2
зашпарился )) ... оно даже медленнее со strtok ... похоже та же копия данных создаётся, только не массивом ... + каракули
0
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779
05.12.2025, 01:34  [ТС]
Просто не хотел использовать цикл внутри цикла



PHP
1
2
3
4
5
6
7
8
foreach ($result['result'] as $row) {
 
$array = explode(',', $row["tags"]);
foreach ($array as $value) {
    echo "<span>" . trim(htmlspecialchars($value)) . "</span>";
}
 
}

просто у меня из бд из поля tags в переменной $row["tags"]

такие данные
Яблоко запеченное, Апельсиновый торт, Банановый джем

скрипт то все делает, разделяет по запятой убирает лишние пробелы по сторонам если они есть и оборачивает каждый тег в спан, просто не хочется цикл в цикле, вот и подумал может есть вариант по короче, проще и лучше!
0
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
05.12.2025, 02:05
serauto79, в моём коде шустрее так
PHP
1
2
3
function f2($str) {
    /*echo*/ '<span>'. preg_replace('/,\s*/', "</span>\n<span>", $str). "<span>\n";
}
> php test.php
length of string 101374
-------
2.925782 f1 2000 times
-------
1.011719 f2 2000 times
-------
2.922851 f1 2000 times
-------
1.040039 f2 2000 times


Добавлено через 6 минут
Цитата Сообщение от ft4l Посмотреть сообщение
, $str). "<span>\n";
, $str). "</span>\n";
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
05.12.2025, 04:31
Цитата Сообщение от serauto79 Посмотреть сообщение
Просто не хотел использовать цикл внутри цикла
Цитата Сообщение от serauto79 Посмотреть сообщение
просто у меня из бд из поля tags в переменной $row["tags"]
По сути вы имеете двумерный массив товаров с тегами. Такое выводят двойным циклом. Не вижу способов улучшения.
1
935 / 554 / 296
Регистрация: 07.11.2022
Сообщений: 908
05.12.2025, 07:51
Как вариант (без циклов)
PHP
1
2
3
4
5
6
<?php
  $string = "Яблоко запеченное, Апельсиновый торт, Банановый джем";
  $string = preg_replace('/\s+/', ' ', $string);
  $array = explode(", ", $string);
  $output = "<span>" . implode("</span><span>", $array) . "</span>";
  echo $output;
1
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779
05.12.2025, 12:34  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
в моём коде шустрее так


PHP
1
2
3
4
5
6
7
$string = "Яблоко запеченное, Апельсиновый торт, Банановый джем ,   Яблоко запеченное , Апельсиновый торт , Банановый джем";
 
function f2($string) {
    echo '<span>'. preg_replace('/,\s*/', "</span>\n<span>", $string). "<span>\n";
}
 
f2($string);
Выполнил код, результат...

HTML5
1
2
3
4
5
6
<span>Яблоко запеченное</span>
<span>Апельсиновый торт</span>
<span>Банановый джем </span>
<span>Яблоко запеченное </span>
<span>Апельсиновый торт </span>
<span>Банановый джем<span>

Как убрать пробелы в данном случае в конце строк
HTML5
1
2
3
<span>Банановый джем </span>
<span>Яблоко запеченное </span>
<span>Апельсиновый торт </span>

похоже такой вариант мне не подойдет, прийдется через цикл оставить, спасибо
просто внутри цикла функция не работает, прийдется цикл в цикле пользовать

PHP
1
2
3
4
5
6
7
8
9
10
foreach ($result['result'] as $row) {
 
$tags_obrezka_zapyatoi = $row["tags"];
print_r($tags_obrezka_zapyatoi);
function f2($tags_obrezka_zapyatoi) {
    echo '<span>'. preg_replace('/,\s*/', "</span>\n<span>", $tags_obrezka_zapyatoi). "<span>\n";
}
f2($tags_obrezka_zapyatoi);
 
}
0
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
05.12.2025, 13:41
Цитата Сообщение от serauto79 Посмотреть сообщение
убрать пробелы
PHP
1
'/\s*,\s*/'
или там даже '/ *, */' вместо \s* если не бывает табуляций и переносов вместо пробелов.
1
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,952
09.12.2025, 09:51
а str_replace не подходит?

PHP
1
2
$string = "Яблоко запеченное, Апельсиновый торт, Банановый джем";
echo '<span>'.str_replace(', ','</span><span>',$string).'</span>';
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2025, 09:51
Помогаю со студенческими работами здесь

Строка без пробела перед запятой и с пробелом после запятой
Всем привет! Помогите, пожалуйста, составить регулярное выражение для строки содержащей буквы...

Найти все символы, стоящие между первой запятой и второй или между запятой и концом строки
Дана последовательность из n символов. Известно, что в последовательности имеется хотя бы одна...

Замена html тегов
в поле вводится текст, и по нажатии на кнопку он записывается в файл. При этом должен блокироваться...

Система тегов и меток для сайта
Доброго времени суток всем! У меня возникла такая необходимость создать &quot;такую&quot; вещь, например,...

Вывод html тегов из php
при помощи редактора в базу данных записывается текст с тегами. например: &quot; &lt;p&gt; примерный текст...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru