我正在尝试制作一个网址,为字符串中的所有/
和hrefs
添加srcs
。
它应该只向{0}开头没有/
并且还没有http://
的网址添加/
。
如果我们有这个:
<a href="ABC">...
<img src="DEFG">...
<a href="/HIJ">...
<a href="http://KLMN">...
结果应该是这样的:
<a href="/ABC">...
<img src="/DEFG">...
<a href="/HIJ">...
<a href="http://KLMN">...
这是我到现在为止所做的:
&(href|src)="?!(\/|http::\/\/)(.+)"
替换将是
$1="/$2"
但是,它不起作用。
答案 0 :(得分:1)
仅使用base
element更改基本URI就足够了:
<base href="/">
现在,基本URI路径为/
,而不是当前文档URI的路径。但请注意,这会影响所有相对URI,而不仅仅是那些具有相对URI路径的URI。
答案 1 :(得分:0)
$str = preg_replace('/(href|src)="([^\/][^:]*)"/', '\1="/\2"', $str)
这将按照您的要求执行,但有一点例外,即包含冒号(:)的任何字符串都不会添加“/”。这使它可以轻松处理http://,ftp://等,但也不适用于像“abcd:efgh”这样的东西。
答案 2 :(得分:0)
这会将标记与href
或src
匹配,第一组包含地址。
(<[^<]*?(?:href|src)=")(?!http|/)(.+?)("[^<]*?>)
并替换为:
$1/$2$3