Получить всю строку после определенного значения в php

#php #arrays #preg-replace #preg-match

#php #массивы #preg-заменить #preg-match

Вопрос:

Мне нужен желаемый результат, будь то в preg_match или explode, который не является проблемой.. Мне нужен вывод в заданном формате массива.

Я пытаюсь разделить строку из этой переменной

ВВОД

Привет, FF_nm, ваш город — FF_city, а ваш пол — FF_gender. название вебинара — FF_extraparam1 И снова ваше имя — FF_nickname

ВЫВОД

массив => [ник, город, пол, extraparam1, никнейм]

Код

 <?php
    $data = "Hi FF_nm,
Your city is  FF_city and your gender is FF_gender. webinar title is FF_extraparam1
Again your name is FF_nickname";

    if (($pos = strpos($data, "FIELDMERGE_")) !== FALSE) { 
        $whatIWant = substr($data, $pos 1); 
    }

    echo $whatIWant; 

    ?>
  

Комментарии:

1. В чем вопрос? Какое preg_* использование вы пытаетесь или хотите?

2. Мне нужен желаемый результат, будь то в preg_match или explode, который не является проблемой.. Мне нужен вывод в заданном формате массива

Ответ №1:

Вы можете использовать цикл explode with foreach как:

 $arr = explode("FIELDMERGE_", $data);
array_shift($arr); // you don't need the first element
foreach($arr as $e) {
    $word = array_shift(explode(" ", $e)); //take the first word
    $res[] = preg_replace('/[^a-zd]/i', '', $word); //remove the , / . / n and so on...
}
  

Ссылка: array-shift, explode, preg-replace

Живой пример:https://3v4l.org/Oa1sn

Комментарии:

1. Я получаю вывод, подобный Array ( [0] => nicknameYour [1] => city [2] => gender [3] => extraparamAgain [4] => nickname )

2. Мне нужен вывод, подобный Array ( [0] => nickname[1] => city [2] => gender [3] => extraparam1 [4] => nickname )

3. @QuestionUser добавлено d в регулярное выражение — надеюсь, теперь все в порядке. Добавлен также живой пример в 3v4l.org/Oa1sn

Ответ №2:

Вы можете использовать preg_match_all с положительным шаблоном lookbehind.

 preg_match_all('/(?<=FF_)w /', $data, $fields);
$output = $fields[0];