我在某处读到正则表达式非常糟糕的HTML。我认为这种情况可能有所不同。
在html中搜索此类模式
<img src="http://example.com/images/abc.jpg" alt="Lorem Ipsum 1" title="Lorem Ipsum 1" class="image-medium caption" /><figcaption>Lorem Ipsum 1</figcaption>
<img src="http://example.com/images/abc.jpg" alt="Lorem Ipsum 2" title="Lorem Ipsum 2" class="image-large caption" /><figcaption>Lorem Ipsum 1</figcaption>
替换为
<img src="http://example.com/images/abc.jpg" alt="Lorem Ipsum 1" title="Lorem Ipsum 1" class="image-medium caption" /><figcaption>Lorem Ipsum 1</figcaption>
<img src="http://example.com/images/abc.jpg" alt="Lorem Ipsum 2" title="Lorem Ipsum 2" class="image-large caption" /><figcaption>Lorem Ipsum 2</figcaption>
注意:班级差异很大,大中型
换句话说:我需要提取标题,然后在figcaption标签中追加标题。
我应该如何使用Regex进行此操作?
答案 0 :(得分:1)
在这里使用正则表达式不是一个好主意 - 它不需要对HTML进行太多更改,以使 无法正常工作。
$text = preg_replace('/title="(.*)"(.*)<figcaption>(.*)<\/figcaption>/U',
'title="$1"$2<figcaption>$1</figcaption>',$text);
以上内容适用于问题中的示例。只是为了使它更清楚它的功能,它也适用于此。
<img src="foo.jpg" alt="Foo image" title="A great time with foo!" class="something" /><figcaption>Get this out</figcaption>
<img src="bar.jpg" alt="Bar image" title="Here is bar!" class="nothing" /><figcaption>This be gone</figcaption>
与
<img src="foo.jpg" alt="Foo image" title="A great time with foo!" class="something" /><figcaption>A great time with foo!</figcaption>
<img src="bar.jpg" alt="Bar image" title="Here is bar!" class="nothing" /><figcaption>Here is bar!</figcaption>