StringReplace
, (*1)
It replace in given string meta data with real data., (*2)
Requirements
PHP version >= 7.2, (*3)
Installation
Installation using composer:, (*4)
composer require andydune/string-replace
Or if composer was not installed globally:, (*5)
php composer.phar require andydune/string-replace
Or edit your composer.json
:, (*6)
"require" : {
"andydune/string-replace": "^1"
}
And execute command:, (*7)
php composer.phar update
SimpleReplace
It's very simple and lightweight replace methods. It uses str_replace
function., (*8)
use AndyDune\StringReplace\SimpleReplace;
$instance = new SimpleReplace();
$instance->one = 'one_ok';
$instance->two = 'two_ok';
$string = 'Gogoriki go #one# and #two#';
$instance->replace($string); // equals to 'Gogoriki go one_ok and two_ok'
There is no any logic in it and it will no replace statements if no data to replace., (*9)
PowerReplace
It powerful replace class with string analytics with regular.
There are many functions built-in lib and you may add custom easily., (*10)
No case sensitive
use AndyDune\StringReplace\PowerReplace;
$instance = new PowerReplace();
$instance->one = 'one_ok';
$instance->TWO = 'two_ok'; // upper key
$string = 'Gogoriki go #ONE# and #two#';
$instance->replace($string); // equals to 'Gogoriki go one_ok and two_ok'
Functions
Functions are described next to marker after :
(you can change separator)., (*11)
Functions can get parameters: #CODE:maxlen(10)#
or #CODE:maxlen("10")#
, (*12)
Symbols: : ( ) , " ' are reserved to use as parameters for function.
So if you want to use it you mast encase it with quotes (or single quotes)., (*13)
This is correct usage:, (*14)
$string = "Params: #weight:prefix(\"'\"):postfix('"')#";
$string = "Params: #weight:prefix(\":\"):postfix(':')#";
$string = "Params: #weight:prefix(\"(\"):postfix(')')#";
$string = "Params: #weight:prefix(\", \"):postfix(', ')#";
More then one function : #CODE:maxlen(10):escape#
, (*15)
escape
Apply htmlspecialchars
with inserted value., (*16)
use AndyDune\StringReplace\PowerReplace;
$string = 'Gogoriki go #ONE:escape#';
$instance = new PowerReplace();
$instance->one = '<b>one_ok</b>';
$instance->replace($string); // equals to 'Gogoriki go <b>one_ok</b>'
addcomma
It adds comma before inserted value if it is not empty., (*17)
use AndyDune\StringReplace\PowerReplace;
$string = 'Gogoriki go #one##two:comma#';
$instance = new PowerReplace();
$instance->one = 'swim';
$instance->one = 'play';
$instance->replace($string); // equals to 'Gogoriki go swim, play'
$string = 'Gogoriki go #one##two:comma#';
$instance = new PowerReplace();
$instance->one = 'swim';
$instance->replace($string); // equals to 'Gogoriki go swim
comma
function may get params: comma(param1, param2)
, (*18)
-
param1 set to
1
if you want to miss first comma appearance in string
-
param2 set to
1
if you want to begin new group of words for next missing of first comma appearance in string
$string = 'I know words: #it:addcomma(1)##and_it:addcomma(1)# and #and_it_2:addcomma(1, 1)#';
$instance = new PowerReplace();
$instance->setArray([
'it' => 'eat',
'and_it' = 'play',
'and_it_2' = 'sleep'
]);
$instance->replace($string); // equals to 'I know words: eat, play and sleep'
maxlen
Replace marker with value if string behind this one is less then poined in parameter., (*19)
use AndyDune\StringReplace\PowerReplace;
$string = 'Gogoriki go #one##two:masxlen(5):addcomma#';
$instance = new PowerReplace();
$instance->one = 'swim';
$instance->one = 'play';
$instance->replace($string); // equals to 'Gogoriki go swim, play'
$instance->one = 'swim';
$instance->one = 'play games';
$instance->replace($string); // equals to 'Gogoriki go swim'
printf
Print formatted string if it is not empty., (*20)
$string = 'I know words: #it:printf(«%s»):addcomma(1)##and_it:printf(«%s»):addcomma(1)# and #and_it_2:printf(«%s»):addcomma(1, 1)#';
$instance = new PowerReplace();
$instance->it = 'eat';
$instance->and_it_2 = 'sleep';
$instance->replace($string); // equals to I know words: «eat» and «sleep»
plural
Pluralize the title for number., (*21)
$string = 'I see #count# #count:plural(man, men)#';
$instance = new PowerReplace();
$instance->count = 1;
$instance->replace($string); // I see 1 man
$instance->count = 21;
$instance->replace($string); // I see 21 men
pluralrus
Russian pluralize the title for number., (*22)
$string = 'У меня есть #count# #count:pluralrus(яблоко, яблока, яблок)#';
$instance = new PowerReplace();
$instance->count = 1;
$instance->replace($string)); // У меня есть 1 яблоко
$instance->count = 21;
$instance->replace($string); // У меня есть 21 яблоко
$instance->count = 2;
$instance->replace($string); // У меня есть 2 яблока
$instance->count = 5;
$instance->replace($string); // У меня есть 5 яблок
prefix
It shows given string as prefix only if value behind the key is not empty., (*23)
$string = 'Vegetables I have: #apple_count:prefix("apples "):addcomma(1)##orange_count:prefix("oranges "):addcomma(1)#';
$instance = new PowerReplace();
$instance->apple_count = 1;
$instance->replace($string); // Vegetables I have: apples 1
postfix
It shows given string as postfix only if value behind the key is not empty., (*24)
$string = 'Params: #weight:prefix("weight: "):postfix(kg)##growth:prefix("growth: "):postfix(sm):addcomma#';
$instance = new PowerReplace();
$instance->weight = 80;
$instance->growth = 180;
$instance->replace($string); // Params: weight: 80kg, growth: 180sm
showIfEqual
It shows string given in second param if first param is equal to value behind the placeholder., (*25)
$string = 'Anton #weight:showIfEqual(80, "has normal weight")##weight:showIfEqual(180, "has obesity")#.';
$instance = new PowerReplace();
$instance->weight = 80;
$instance->replace($string); // Anton has normal weight.
$string = 'Anton #weight:showIfEqual(80, "has normal weight")##weight:showIfEqual(180, "has obesity")#.';
$instance = new PowerReplace();
$instance->weight = 180;
$instance->replace($string); // Anton has obesity.
showIfOtherValueNotEmpty
It shows string value behind the current placeholder if another is not empty., (*26)
$string = 'Variants #type[name]:showIfOtherNotEmpty(type[value])##type[value]:prefix(": ")#';
$instance = new PowerReplace();
$instance->setArray(['type'=> ['name' => 'color', 'value' => 'green']]);
$instance->replace($string); // Variants color: green
Custom Functions
You can add your own functions with replace rules. Markers and functions are not case sensitive., (*27)
$string = 'Where is #word:leftAndRight(_)#?';
// or the same
$string = 'Where is #WORD:LEFTANDRIGHT(_)#?';
$functionHolder = new FunctionsHolder();
// add custom function with name leftAndRight
$functionHolder->addFunction('leftAndRight', function ($string, $symbol = '') {
return $symbol . $string . $symbol;
});
$instance = new PowerReplace($functionHolder);
$instance->word = 'center';
$instance->replace($string); // Where is _center_?
Application