#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];