Как я могу получить слово после строки? - PullRequest
0 голосов
/ 18 мая 2019

У меня есть строка, которая где-то содержит Style Name: Something.То, что я хочу сделать, это найти Style Name: и получить обратно Something или что-то еще.

Я знаю, что нужно что-то сделать с strpos для поиска строки, но я довольно сильно застрял при получении значения.

Ответы [ 4 ]

1 голос
/ 18 мая 2019

Вам не нужно регулярное выражение.
Два простых взрыва, и вы получили название стиля.

$str = "something something Style Name: Something some more text";

$style_name = explode(" ",explode("Style Name: ", $str)[1])[0];

echo $style_name; // Something
1 голос
/ 18 мая 2019

Вы можете использовать preg_match_all:

$input = "Sample text Style Name: cats and also this Style Name: dogs";
preg_match_all("/\bStyle Name:\s+(\S+)/", $input, $matches);
print_r($matches[1]);

Это печатает:

Array
(
    [0] => cats
    [1] => dogs
)

Используемый шаблон \bStyle Name:\s+(\S+) соответствует Style Name:, за которым следуют один или несколько пробелов.Затем он соответствует и фиксирует следующее слово, следующее за ним.

0 голосов
/ 18 мая 2019

Другой вариант - использовать \K, чтобы забыть то, что было найдено, и совпадать с 0+ горизонтальным пробелом \h*:

\bStyle Name:\h*\K\S+

Regex demo | Php demo

$re = '/\bStyle Name:\h*\K\S+/m';
$str = 'Style Name: Something Style Name: Something Style Name: Something';
preg_match_all($re, $str, $matches);
print_r($matches[0]);

Результат

Array
(
    [0] => Something
    [1] => Something
    [2] => Something
)
0 голосов
/ 18 мая 2019

с позитивным взглядом,

<?php
$string="Style Name: Something with colorful";
preg_match('/(?<=Style Name: )\S+/i', $string, $match);
echo $match[0];
?>

ДЕМО: https://3v4l.org/OICqF

...