Bogdan C
Bogdan C

Reputation: 399

Reformat a string with two sets of delimiters into more human-readable, multiline text

$string = "706AN=0,503-PP=0,504-PP=0,519=0,606BOX=0,417=2"; // This variable is a result from a database column type text

I need to get individually the code before "=" and the result assigned to that code, after "=". The split string should return me something like:

Code 706AN has quantity 0  
Code 503-PP has quantity 0  
Code 504-PP has quantity 0  
Code 519 has quantity 0  
Code 606BOX has quantity 0  
Code 417 has quantity 2

How can I substract each code with his own quantity result?

Upvotes: 1

Views: 1086

Answers (4)

mickmackusa
mickmackusa

Reputation: 48031

Your question requirements don't appear to require parsing the text into a temporary array before returning the data to a newly formatted string. Just use preg_replace() to capture the vital substrings and apply the desired text around those substrings. Demo

$string = "706AN=0,503-PP=0,504-PP=0,519=0,606BOX=0,417=2";
echo preg_replace(
         '#([^=]+)=(\d+),?#',
         "Code \$1 has quantity \$2\n",
         $string
     );

Output:

Code 706AN has quantity 0
Code 503-PP has quantity 0
Code 504-PP has quantity 0
Code 519 has quantity 0
Code 606BOX has quantity 0
Code 417 has quantity 2

Upvotes: 0

Faizan Sayyed
Faizan Sayyed

Reputation: 11

$string = "706AN=0,503-PP=0,504-PP=0,519=0,606BOX=0,417=2";
$exp = explode(',', $string);

foreach ($exp as $key => $value) {
    $list = explode('=', $value);
    echo "Code $list[0] has quantity $list[1] </br>";
}

Upvotes: 1

Jigar Shah
Jigar Shah

Reputation: 6223

You can use explode

Working Demo: https://eval.in/869203

$string = "706AN=0,503-PP=0,504-PP=0,519=0,606BOX=0,417=2";
$temp = explode(',', $string);


foreach ($temp as $key => $value) {
    list($code,$quantity) = explode('=', $value);
    echo "Code $code has quantity $quantity </br>";
}

Upvotes: 2

MartinLeitgeb
MartinLeitgeb

Reputation: 63

  • 1) Split the String by the "," (comma)
  • 2) loop over the resulting array
  • 2.1)Split the String-part by "="
  • 2.2) First part of the result is the name and the second is the quanitity
  • 2.3) Create a new String ala "Code $name has quantity $qtty"
  • 2.4) Add it to a list, a String or whatever datastructure you like

I can give you a code example later, im in a hurry atm

hth

Upvotes: -1

Related Questions