请帮助使preg_replace正则表达式将html标签更改为" BB"
<img src="URL" style="max-width: 780px;"/>
<div id="center">TEXT</div>
<a href="http://href.li/?URL" target="blank">$1</a>
<iframe width="780" height="450" src="//www.youtube.com/embed/TEXT" frameborder="0" allowfullscreen></iframe>
<strong>TEXT</strong>
[img]$1[/img]
[center]$1[/center]
[link]$1[/link]
[video]$1[/video]
[strong]$1[/strong]
行。我做到了
%<img src=\"*(.*?)\".*>%
答案 0 :(得分:1)
由于没有真正的简单替换模式(新命名的bb-tags中需要不同标签的不同属性),每个替换对的单独正则表达式可能会有所帮助:
$rx_map = array(
'~<strong>(.*?)</strong>~is' => '[strong]\1[/strong]',
'~<img\s[^>]*\bsrc="([^"]+)".*?/>~is' => '[img]\1[/img]',
'~<a\s[^>]*\bhref="([^"]+)".*?</a>~is' => '[link]\1[/link]',
'~<iframe\s[^>]*\bsrc="([^"]+)".*?</iframe>~is' => '[video]\1[/video]',
'~<div\s+id="center">(.*?)</div>~is' => '[center]\1[/center]',
);
$str = preg_replace(array_keys($rx_map), array_values($rx_map), $str);
用于无壳的修饰符i
和用于使点也匹配换行符的s
。这将取代:
[img]URL[/img]
[center]TEXT[/center]
[link]http://href.li/?URL[/link]
[video]//www.youtube.com/embed/TEXT[/video]
[strong]TEXT[/strong]
test at eval.in;正如其他人已经提到的,通常不建议使用正则表达式来解析html。根据您的数据,它可能不是在此处使用正则表达式并导致问题的最佳选择。