我需要有关正则表达式的帮助。我正在寻找的是一个正则表达式,它查找这样的链接标记:

<link rel="stylesheet" href="style.css" type="text/css">

不管href =“”的位置如何,我都希望在链接标记中查找它,并在style.css的前面加上一个/并将变量$ url放在其中。如果它在style.css前面找到http://或https://,那么我不想将变量放在它的前面。

我希望替换每个链接标签。

最佳答案

您可以像这样使用preg_replace归档所需的结果:

preg_replace('/(<link\b.+href=")(?!http)([^"]*)(".*>)/', '$1'.$url.'$2$3$4', $html);

因此,此代码(假设存储在$ html和$ url ='http://mydomain.com/'中):
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="stylesheet" href="style2.css" type="text/css">
<link rel="stylesheet" href="http://google.com/style3.css" type="text/css">
<link rel="stylesheet" href="style4.css" type="text/css">
<link rel="stylesheet" href="https://google.com/style5.css" type="text/css">
<link rel="stylesheet" href="some/path/to/style6.css" type="text/css">

将被转换为:
<link rel="stylesheet" href="http://mydomain.com/style.css" type="text/css">
<link rel="stylesheet" href="http://mydomain.com/style2.css" type="text/css">
<link rel="stylesheet" href="http://google.com/style3.css" type="text/css">
<link rel="stylesheet" href="http://mydomain.com/style4.css" type="text/css">
<link rel="stylesheet" href="https://google.com/style5.css" type="text/css">
<link rel="stylesheet" href="http://mydomain.com/some/path/to/style6.css" type="text/css">

关于php - HTML中链接标签的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1273325/

10-12 18:05