Нахождение текста между теми же двумя символами в строке php
Так что я знаю, как извлечь текст из строки php, когда он четко разделен двумя разными символами (т.е. [abc])...
Однако сейчас я сталкиваюсь с проблемной ситуацией, когда мне нужно извлечь текст, находящийся между двумя экземплярами одного и того же символа ('/'). Еще сложнее то, что это может происходить несколько раз в пределах одной и той же строки.
Пример должен помочь сделать это более понятным:
"This is /a/ silly ex/amp/le of what I /me/an."
В этом случае я бы хотел захватить 'a', 'amp' and 'me'
,
Эти примеры показывают различные случаи, с которыми я могу столкнуться (разная длина и случаи, когда я не берусь за целое слово, а за буквы в слове).
Что я пробовал:
('/(\/.+?)+(\/)/i')
Но это, как и ожидалось, захватывает все между первым и последним слешем. Идеальным будет способ совпадения до СЛЕДУЮЩЕГО появления слэша, а не до последнего...
Я гуглял это довольно давно, но придумываю только случаи с двумя разными разделителями.
2 ответа
Ты можешь использовать preg_match_all
чтобы получить несколько матчей.
$string = 'This is /a/ silly ex/ampl/e of what/ I me/an';
$regex = '/\/.+?\//';
preg_match_all($regex, $string, $matches);
print_r($matches);
Array
(
[0] => Array
(
[0] => /a/
[1] => /ampl/
[2] => / I me/
)
)
Попробуй это:
(\/)(.*?)\1
Что внутри (\/)
будет то, что вы соответствуете между. Например, соответствие между набором *
будет выглядеть так:
(\*)(.*?)\1