我正在开发一个小型PHP项目,我需要用它的绝对版本替换字符串中找到的每个相对url。问题是,我已经找到了很多这个问题的答案,但是所有这些都要求网址以href作为前缀。 我需要转换的一个简单示例如下:
<link rel="alternate" type="application/atom+xml" title="Feed for question 'preg_replace to change url from relative to absolute'" href="/feeds/question/19373024">
<meta name="twitter:app:country" content="US" />
<meta name="twitter:app:name:iphone" content="Stack Exchange iOS" />
<meta name="twitter:app:id:iphone" content="871299723" />
<meta name="twitter:app:url:iphone" content="se-zaphod://stackoverflow.com/questions/19373024/preg-replace-to-change-url-from-relative-to-absolute" />
并且在这种情况下,它应该显示(转换后)为:
<link rel="alternate" type="application/atom+xml" title="Feed for question 'preg_replace to change url from relative to absolute'" href="http://stackoverflow.com/feeds/question/19373024">
<meta name="twitter:app:country" content="US" />
<meta name="twitter:app:name:iphone" content="Stack Exchange iOS" />
<meta name="twitter:app:id:iphone" content="871299723" />
<meta name="twitter:app:url:iphone" content="se-zaphod://stackoverflow.com/questions/19373024/preg-replace-to-change-url-from-relative-to-absolute" />
答案 0 :(得分:0)
$pattern = '/\"\/feeds\/question/';
$subject = "href='/feeds/question/19373024'>";
$replacement = "http://stackoverflow.com/feeds/question";
echo preg_replace($pattern, $replacement, $subject);
编辑:您可以在preg_replace中使用$ pattern设置正则表达式模式。 我这样做了:https://regex101.com/r/xB0dY5/1
然后在$ subject中我加载了一个包含“feeds / questions”的字符串。 在$替换字符串,它应该替换正则表达式选择的东西。
你应该使用“(quote)(”/ feeds ...)正则表达式,否则它会选择第二个链接的提要/问题。