Вы не можете разделить это легко.Но обходной путь - это сопоставить его попарно, используя что-то вроде:
preg_match_all('#(.*?)(https?://\S+(?<![,.]))\K#s', $str, $m,
PREG_SET_ORDER);
$list = call_user_func_array("array_merge", $m);
. Call_user_func_array - это еще один обходной путь, позволяющий избежать сглаживания массива вручную.Однако этот метод приведет к пустым записям между ними:
Array
(
[0] =>
[1] => Hello, my name is
[2] => http://www.audio.com/1234.mp3/
[3] =>
[4] => Today is
[5] => https://radio.org/weather.wav
)
Также обратите внимание, что упрощенное регулярное выражение URL уничтожило период.(Используйте точные группы символов вместо вида назад).