PHP: использование preg_replace для замены неизвестной строки между двумя известными строками - PullRequest
0 голосов
/ 20 мая 2018

У меня есть $ stringF.Внутри $ stringF содержится следующее (строка состоит из одной строки, без переноса слов, как показано ниже):

http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=
AFQjCNHWQk0M4bZi9xYO4OY4ZiDqYVt2SA&clid=
c3a7d30bb8a4878e06b80cf16b898331&cid=52779892300270&ei=
H4IAW6CbK5WGhQH7s5SQAg&url=https://abcnews.
go.com/Lifestyle/wireStory/latest-royal-wedding-thousands-streets-windsor-55280649

Я хочу найти эту строку и сделать ее похожей на это:

https://abcnews.go.com/Lifestyle/wireStory/latest-royal-
wedding-thousands-streets-windsor-55280649

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

http://news.google.com/news/url?sa= ***SOME UNKNOWN CONTENT*** &url=http

и заменить ее следующей строкой:

http

Я немного заржавел с моимphp, и даже более грубый с регулярными выражениями, так что я изо всех сил пытаюсь понять это.Мой код выглядит следующим образом:

$stringG = preg_replace('http://news.google.com/news/url?sa=*&url=http','http',$stringH);

за исключением того, что я знаю, что не могу использовать подстановочные знаки, и я знаю, что мне нужно специально работать со специальными символами (двоеточие, косая черта, знак вопроса, знак и т. Д.),Надеюсь, что кто-то может помочь мне здесь.

Также следует отметить, что мой $ stringF содержит несколько экземпляров таких строк, поэтому мне нужно, чтобы preg_replace не было жадным - в противном случае он изменит огромный кусок моей строки без необходимости..

1 Ответ

0 голосов
/ 20 мая 2018

PHP имеет инструменты для этого, нет необходимости использовать регулярные выражения.parse_url для получения компонентов URL (схема, хост, путь, якорь, запрос, ...) и parse_str для получения ключей / значений запросачасть.

$url = 'http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNHWQk0M4bZi9xYO4OY4ZiDqYVt2SA&clid=c3a7d30bb8a4878e06b80cf16b898331&ci=52779892300270&ei=H4IAW6CbK5WGhQH7s5SQAg&url=https://abcnews.go.com/Lifestyle/wireStory/latest-royal-wedding-thousands-streets-windsor-55280649';

parse_str(parse_url($url, PHP_URL_QUERY), $arr);

echo $arr['url'];
...