Замяна на първия текст след/преди символ с php

Pok4

Registered
Здравейте,

Срещнах трудност.. Имам този стринг:
16=>3,14=>2
Може да се разширява още, пример:
16=>3,14=>2,18=>1,19=>5 и т.н.

Искам да заменя първите числа преди =>, тоест:
16,14,18,19 да ги обхвана с <ahref=""> тагове.
Търсих в нета, но не попаднах на нищо, което да ми върши работа, а и не знам дали въобще е възможно.
Първите числа са продукти, а след => е бройката, която е поръчана. Това е за админ панела.
Ще съм благодарен, ако дадете вариант да стане по-някакъв начин... Държа обаче да се връща пак стринг, а не масив... Ако ще се върти в масив, накрая трябва да връща стринг.
 
Явно имаш някакъв проблем с парсването на стрингове?
Ето едно тъпо решение, ако гониш перформънс не е за теб:
PHP:
<?php

$input = '16=>3,14=>2,18=>1,19=>5';
$strArr = explode(',', $input);

foreach ($strArr as $e) {
    $keyValue = explode('=>', $e);

    echo '<a href="' . $keyValue[0] . '">' . $keyValue[1] . '</a>';
}
 
Eто и друг пример, за решаване на проблема.
PHP:
<?php
$string = '16=>3,14=>2,18=>1,19=>5';
$stringArray = explode(',', $string);
$counter = count($stringArray);
$patterns = array_fill(0, $counter-1, '/([0-9]+)(=>[0-9]+)/ui');
$replacements = array_fill(0, $counter-1, rand(0, 100) . '$2');

echo preg_replace($patterns, $replacements, $string);

 
  • Like
Реакции: Pok4
Благодаря за отговорите, оправих се :)
 
Eто и друг пример, за решаване на проблема.
PHP:
<?php
$string = '16=>3,14=>2,18=>1,19=>5';
$stringArray = explode(',', $string);
$counter = count($stringArray);
$patterns = array_fill(0, $counter-1, '/([0-9]+)(=>[0-9]+)/ui');
$replacements = array_fill(0, $counter-1, rand(0, 100) . '$2');

echo preg_replace($patterns, $replacements, $string);

Стига бе, regex за такава глупост.
 
Стига бе, regex за такава глупост.
При такива входни данни, се радвай, че не представих пример с mb_str_split(). С колегите понякога си правим шеги, по клиентски задания. Впрочем може да се използват и preg_replace_callback или preg_replace_callback_array с не по-лоша продуктивност. :D
 
Недей, че новобранците ще помислят, че е добро решение и няма да се научат да си оправят данните. Мислих си да пиша коментар, че данните са шит, ама се сдържах (индиректно го казах в този пост :D ).
 
Не знам за кой път ама нормализирай си данните.
Недей, че новобранците ще помислят, че е добро решение и няма да се научат да си оправят данните. Мислих си да пиша коментар, че данните са шит, ама се сдържах (индиректно го казах в този пост :D ).
То над нас @uphero си го написа директно. Автора сподели, че се е справил с проблема и реших да споделя и малко по-друго решение, просто за муза. :D
 

Back
Горе