2011-09-19 67 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