PHP Match и заменить - PullRequest
       1

PHP Match и заменить

0 голосов
/ 11 октября 2010

Я хочу заменить каждую ссылку, найденную в строке, измененной версией строки, скажем, например:

Быстрая коричневая лиса перепрыгнула через 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
Однако как я могу сопоставить и заменить их все?Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 11 октября 2010

Используйте preg_replace для этого:

$str = preg_replace('/\?v=([^ ]*)/', '/v/$1', $str);

Предполагается, что вы хотите сопоставить все после ?v= и поставить его после /v/. Если это не так, вам нужно будет более точно определить, что такое шаблон.

1 голос
/ 11 октября 2010

с помощью флагов g (global) и i (без учета регистра) следует расширить поиск до всего.

$string = preg_replace('/\?v=([^\s]+)/gi','/v/$1', $string);

Предполагается, что после URL-адреса есть пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...