我正在尝试做这个正则表达式匹配和替换,但不能做到这一点。
例子<a href=one target=home>One</a>
<a href=two>Two</a>
<a href=three target=head>Three</a>
<a href=four>Four</a>
<a href=five target=foot>Five</a>
我想找到每一组a标签并替换成这样的东西
找<a href=one target=home>One</a>
改变
<a href='one'>One</a>
和其他的a标签一样。
任何帮助将非常感激!
使用DomDocument()
会更容易处理HTML。
<?php
$str = '<a href=one target=home>One</a>
<a href=two>Two</a>
<a href=three target=head>Three</a>
<a href=four>Four</a>
<a href=five target=foot>Five</a>';
$dom = new DomDocument();
$dom->loadHTML($str);
$anchors = $dom->getElementsByTagName('a');
foreach ($anchors as $a)
{
if ($a->hasAttribute('target'))
{
$a->removeAttribute('target');
}
}
$str = $dom->saveHTML();
实际操作
使用
preg_replace('/<a(.*)href=(")?([a-zA-Z]+)"? ?(.*)>(.*)<'/a>/', '<a href='$3'>$5</a>', '{{your data}}');
如果你想要一个正则表达式,试试这个:
$str = preg_replace('/<a [^>]*href=([^''" ]+) ?[^>]*>/',"<a href=''1'>",$str);
我不建议使用正则表达式来做这些