Я хочу заменить каждую ссылку, найденную в строке, измененной версией строки, скажем, например:
Быстрая коричневая лиса перепрыгнула через http://www.google.com/?v=abc иhttp://www.google.com/?v=x_y-z Я бы заменил (и изменил) ссылки в этом, чтобы это стало: http://www.google.com/v/abc и http://www.google.com/v/x_y-z
Я знаю, как найти всессылки с использованием preg_match_all ($ pattern, $ text, $ out, PREG_SET_ORDER);и я могу манипулировать строками, используя preg_split и т. д. - Это делается по одному.
Результат, который я ищу:
Быстрая коричневая лиса перепрыгнула через http://www.google.com/v/abc и http://www.google.com/v/=x_y-z Однако как я могу сопоставить и заменить их все?Любая помощь будет принята с благодарностью.
Используйте preg_replace для этого:
preg_replace
$str = preg_replace('/\?v=([^ ]*)/', '/v/$1', $str);
Предполагается, что вы хотите сопоставить все после ?v= и поставить его после /v/. Если это не так, вам нужно будет более точно определить, что такое шаблон.
?v=
/v/
с помощью флагов g (global) и i (без учета регистра) следует расширить поиск до всего.
$string = preg_replace('/\?v=([^\s]+)/gi','/v/$1', $string);
Предполагается, что после URL-адреса есть пробелы.