1

可能重复:
bbcode unparser regex help

我想转换这个 HTML 代码

<div class="postQuote"> <div class="postQuoteAuthor"><a href="http://www.siteurl.com/profile.php?user=Username">Username</a> wrote...</div> quoted text</div> comment 

到 bbcode ..

[QUOTE=Username] quoted text [/QUOTE] comment

我不想要关于创建 bbcode 的教程,它已经设置好了,我只想知道如何匹配和替换 .. 使文本与新板兼容

4

2 回答 2

0

好吧,通常人们会求助于 preg_replace ......但我更喜欢更长的 stripos() 过程

if (($startat = stripos($html,'<div class="postQuote"'))!==false) {

  $startend = stripos($html,'</div', stripos($html,'</div', $startat)+6);

  $start_username_at = stripos($html,'<a', $startat);
  $start_username_end = stripos($html,'</a', $start_username_at);

  $start_comment_at = stripos($html,'</div', $startat)+6;
  $start_comment_end = stripos($html,'</div', $start_comment_at);

  $username = trim(strip_tags(substr($html,$start_username_at,$start_username_end-$start_username_at)));
  $comment = trim(strip_tags(substr($html,$start_comment_at,$start_username_end-$start_comment_at)));
  echo "[QUOTE=Username]".$username."[/QUOTE] ".$comment;

}
于 2012-12-02T23:33:57.800 回答
0
$string = '<div class="postQuote"> <div class="postQuoteAuthor"><a href="http://www.siteurl.com/profile.php?user=Username">Username</a> wrote...</div> quoted text</div> comment ';

$string = preg_replace('|^<div class="postQuote".*user=([^"]+)".+</div>([^<]+)</div>(.+)$|', '[QUOTE=$1] $2 [/QUOTE] $3', $string);

echo $string; // [QUOTE=Username] quoted text [/QUOTE] comment 
于 2012-12-02T23:40:57.850 回答