替换<a> tag with <b> tag using PHP</b></a>

时间:2011-03-05 07:55:39

标签: php html

好的,我有一段代码,例如:
    <a title="title" href="http://example.com">Text</a>

我需要以某种方式重新格式化它们以便它们成为:
    <b>Text</b>

至少有24个链接被更改,并且它们都有不同的标题和href。在此先感谢奥斯汀。

4 个答案:

答案 0 :(得分:14)

虽然不是最佳,但您可以使用正则表达式执行此操作:

$string = '<a title="title" href="http://example.com">Text</a>';

$string = preg_replace("/<a\s(.+?)>(.+?)<\/a>/is", "<b>$2</b>", $string);

echo($string);

这实际上是说,查找格式为<a*>{TEXT}</a>的字符串的一部分,复制{TEXT},并将整个匹配的字符串替换为<b>{TEXT}</b>

答案 1 :(得分:2)

试试这个,

$link = '<a title="title" href="http://example.com">Text</a>';
echo $formatted = "<b>".strip_tags($link)."</b>";

同时检查this链接,我认为这正是您要找的。

答案 2 :(得分:1)

您想了解Regular Expressions,因为无论如何您迟早都需要它们。如果您不介意href属性的内容,那么您可以使用:

s/<a(?:\s[^>]*)?>([^<]+)<\/a>/<b>\1<\/b>/

第一个//之间的部分搜索开始标记(单独使用&lt; a&gt;或者使用某些参数,在这种情况下需要使用空格\ s以避免匹配&lt; abbrev&gt;例如)括号和结束标记将存储的文本。第二个//之间的部分是替换部分,其中\ 1表示与第一部分中的括号匹配的文本。

另请参阅PHP的preg_replace函数。最后的表达式看起来像这样(测试过):

preg_replace('/<a(?:\s[^>]*)?>([^<]+)<\/a>/i', '<b>\\1</b>', '<a href="blabla">Text</a>');

答案 3 :(得分:0)

要用另一个标签替换并同时匹配/替换属性名称:

$string = '<img src="https://example.com/img.png" alt="Alternative"/>';
$string = preg_replace('/<img src="(.+?)" alt="(.+?)"\\/>/is','<amp-img src="$1" alt="$2"></amp-img>',$string);
//$string is now '<amp-img src="https://example.com/img.png" alt="Alternative"></amp-img>'