2011-09-19 63 views

回答

2

提供改进版本:
1)将考虑两个“”作为参数外壳
2)将与多个标签
3工作)允许用于其他参数的a标签和各种间距

<?php 
$r = "<a href=\"test.html\" arg2=\"foo\" bar3=\"_something_else\">test</a>\n 
<a href= \"test2.html\" >test2</a>\n 
<a href = 'test3.html'>test3</a>\n 
"; 
$r = preg_replace("/<a.*?href[^=]*=[^'\"]*['\"]([^'\"]+)['\"].*?>([^<]+)<\/a>/", "[url=\\1]\\2[/url]", $r); 
echo $r; 

输出:

[url=test.html]test[/url] 

[url=test2.html]test2[/url] 

[url=test3.html]test3[/url] 
+0

将a转换为输出时,是否可以从a标签中删除target =“_ blank”?这是我的问题atm。 – sark9012

+0

此外,我知道这是一个完全不同的主题,但是当我在HTML中有
时,我该如何删除它并使其看起来像用户的新行? – sark9012

+0

以上正则表达式将已经剥离任何其他参数尝试自己;)它将工作 – jancha

2

最简单的方法你可以用

$result = preg_replace('/<a href="(.*)">(.*)<\/a>/', '[url="\1"]\2[/url]', $input);

+0

我收到以下错误。警告:preg_replace()[function.preg-replace]:未知修饰符'a' – sark9012

+0

<\/a>应该修复该问题 – jancha

+0

对不起,我忘了在''中逃脱斜线。我刚刚编辑了我的答案。 – dinopmi

2

尝试使用这种表达尝试: #<a href="(.*?)">(.*?)</a>#s

实施例:

$str = '<a href="link">title</a>'; 
$str = preg_replace('#<a href="(.*?)">(.*?)</a>#s', '[url="\\1"]\\2[/url]', $str); 

演示:Codepad