Как разбить PHP-строку на части

Как разбить эту строку «# сейчас мое время # Каир путешествия # здесь», чтобы стать в массиве, как это

Array ( [0] => #now [1] => my time [2] => #Cairo [3] => travel [4] => #here )

-2

Решение

https://secure.php.net/manual/en/function.explode.php

$array = explode(" ", $yourString)
-1

Другие решения

<?php

$string='#now my time #Cairo travel #here';
$string=explode(' ',$string);

$result=array($string[0],$string[1].' '.$string[2],$string[3],$string[4],$string[5]);
print_r($result);Array ( [0] => #now [1] => my time [2] => #Cairo [3] => travel [4] => #here )
0

function extractHashes($string) {
$return = [];
$r = 0;
$parts = explode(' ', $string);

// Helper function return bool if string starts with hash.
$swh = function ($s) {
return (strpos($s, '#') === 0);
};

for ($p = 0; $p < count($parts); $p++) {
// Add word or append word to return array.
if (!isset($return[$r])) {
$return[$r] = $parts[$p];
} else {
$return[$r] .= ' ' . $parts[$p];
}

// Increment index if current word or next word starts with hash.
if ($swh($parts[$p]) || ($p + 1 < count($parts) && $swh($parts[$p + 1]))) {
$r += 1;
}
}

return $return;
}

Ваш пример:

$string1 = "#now my time #Cairo travel #here";
print_r( extractHashes($string1) );

Выходы:

Array
(
[0] => #now
[1] => my time
[2] => #Cairo
[3] => travel
[4] => #here
)

Другой пример:

$string2 = "here is #another #string for testing #function works";
print_r( extractHashes($string2) );

Выходы:

Array
(
[0] => here is
[1] => #another
[2] => #string
[3] => for testing
[4] => #function
[5] => works
)
0

При работе с переменными разделителями, регулярное выражение является разумным выбором.

var_export(preg_match_all('/#\S+| \K[^#]+\b/','#now my time #Cairo travel #here',$out)?$out[0]:'fail');

Это будет соответствовать одиночным хештэгам и не хэшированным строкам без пропусков между ними.

Образец демо: https://regex101.com/r/CtnriL/1/

Php демо: https://3v4l.org/CMW77

Выход:

array (
0 => '#now',
1 => 'my time',
2 => '#Cairo',
3 => 'travel',
4 => '#here',
)

Вот еще один способ с более простым шаблоном, но с дополнительным вызовом функции:

var_export(array_map('trim',preg_split('/(#\S+)/','#now my time #Cairo travel #here',null,PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY)));

Php демо: https://3v4l.org/d47Tg

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector