This is my string
#Jhon: Manager #Mac: Project Manager #Az: Owner
And I want array something like this
$array = ['0' => 'Manager', '1' => 'Project Manager', '2' => 'Owner']
I tried this but each time return only 'Manager'
$string = '#Jhon: Manager #Mac: Project Manager #Az: Owner';
getText($string, ':', ' #')
public function getText($string, $start, $end)
{
$pattern = sprintf(
'/%s(.+?)%s/ims',
preg_quote($start, '/'), preg_quote($end, '/')
);
if (preg_match($pattern, $string, $matches)) {
list(, $match) = $matches;
echo $match;
}
}
You may preg_split
the contents and use the following solution:
$re = '/\s*#[^:]+:\s*/';
$str = '#Jhon: Manager #Mac: Project Manager #Az: Owner';
$res = preg_split($re, $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($res);
See the PHP demo and a regex demo.
Pattern details:
\s*
- 0+ whitespaces#
- a literal #
symbol[^:]+
to match 1+ chars other than :
:
- a colon\s*
- 0+ whitespaces.Note that -1
in the preg_split
function is the $limit
argument telling PHP to split any amount of times (as necessary) and PREG_SPLIT_NO_EMPTY
will discard all empty matches (this one may be removed if you need to keep empty matches, that depends on what you need to do further).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With