×
Ruby on Rails: постинг твитов через Twitter API (04 нояб 2017)

Практикуемся в Ruby on Rails.

× Время от времени - и не так чтобы редко - на форуме звучат вопросы по нативному PHP... решили собирать их в этой ветке.

Идея Роллы PHP

Больше
1 мес. 4 нед. назад - 1 мес. 4 нед. назад #1 от Aleksej
Aleksej создал эту тему: Роллы PHP
Тема почерпнута из вопроса новичка на php.ru/forum; а решение вполне достойно того, чтобы продублировать здесь, в этом разделе. Итак, как бы вы отнеслись к необходимости из строчки

ID005 Ролл Дракон маки 380 руб. 1 = 380 ID007 Ролл Икура маки 220 руб. 3 = 220 ID008 Ролл Кавагиши 220 руб. 8 = 220 ID009 Ролл Калифорния 220 руб. 6 = 220

убрать все лишнее средствами php, оставив только идентификаторы и количество?
Быстрое решение "на коленке", в стиле студии Артемия Лебедева ("вот так это было, и вот так нам пришлось помучиться") выглядело как-то так:

<?
$string = 'ID005 Ролл Дракон маки 380 руб. 1 = 380 ID007 Ролл Икура маки 220 руб. 3 = 220 ID008 Ролл Кавагиши 220 руб. 8 = 220 ID009 Ролл Калифорния 220 руб. 6 = 220';
$a = explode("ID", $string);
$arr = preg_replace('/[^0-9]/', ' ', $a);
$c = implode(" ",$arr);
$string=preg_replace('/ {2,}/',',',$c);
$array = explode(',', $string);
foreach ($array as $k=>$v) {
    if ($k % 2 != 1)
        $b[] = $v;
}
$d = implode(" ",$b);
echo $d; // 005 1 007 3 008 8 009 6


, более же компактное и грамотное решение состояло в следующем:

<?
$s = 'ID005 Ролл Дракон маки 380 руб. 1 = 380 ID007 Ролл Икура маки 220 руб. 3 = 220 ID008 Ролл Кавагиши 220 руб. 8 = 220 ID009 Ролл Калифорния 220 руб. 6 = 220';
echo(rtrim(preg_replace('/ID(\d+).+?(\d+) = \d+( |$)/', '$1#$2,', $s), ',')); //005#1,007#3,008#8,009#6


Сравнение двух подходов к решению проблемы представляет интерес, мотаем на ус, а вдруг пригодится кому.
Последнее редактирование: 1 мес. 4 нед. назад от Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.