Подстрока до пробела

434
17 мая 2017, 09:37

Есть строка вида

text text text @hello text text 

Как мне вытащить именно @hello а именно все,что начинается с @ и до пробела Пробовал через explode и strstr,не вышло что то. Получается найти @hello и дальше до конца строки,а мне именно @hello нужно

Answer 1

Вот. Легко и просто.

$text  = "text text text @hello text text ";
$a = strstr($text, '@');          // отсекаем всё слева
$pos = strpos($a, " ");           // узнаём сколько знаков до пробела справа
$final = substr($a, 0, $pos);     // отступим $pos количество символов, и удалим всё справа
echo $final;


Вот ещё проще:

$text  = "text text text @hello text text ";
$a = strstr($text, '@');      // обрезаем все слева до @
$b = strstr($a, ' ', true);   // если true, то обрезка будет справа, обрезаем после пробела
echo $b;


Укороченный вид: (автор @E_p)

$text  = "text text text @hello text text ";
$a = strstr(strstr($text, '@'), ' ', true);
echo $a;
Answer 2

Например, регулярным выражением

$search = 'text text text @hello text text';
$patt = '~@[\S]+~';
preg_match_all($patt, $search, $all);
echo '<pre>'; var_dump($all); echo '</pre>';
Answer 3

Решения выше считаю более лучшим вариантом, но и такой также имеет право на жизнь:

$text  = "text text text @hello text text ";
function findAfterDogText($text)
{
    $arr = explode(' ', $text);
    foreach ($arr as $value) {
        if ($value[0]=='@') {
            return substr($value, 1);
        }
    }
    return null;
}
var_dump(findAfterDogText($text));
READ ALSO
HTML-теги в php

HTML-теги в php

Столкнулся с интересной проблемой, решить которую самостоятельно не удаётсяВ общем, суть в том, что функция вида :

421
Выбор ячеек в библиотеке PHPExel

Выбор ячеек в библиотеке PHPExel

Доброго времени суток! Мне необходимо обратиться к конкретным 2-м столбцам Exel и обрабатывать их содержимоеАлгоритм простой:

466
Сессия истекла - удалить пользователя codeigniter

Сессия истекла - удалить пользователя codeigniter

Помогите реализовать функцию удаления аккаунта из phpmyadmin по истечению 48 часов Мне нужно чтобы сессия хранилась 48 часов и после истечении...

465
FPDF - новая страница

FPDF - новая страница

Есть календарь, который нужно вывести в pdfДелаю я это так:

363