PHP正则表达式打破特殊字符

var_dump(
  preg_replace( 
    array( 
      '#[\s
\
]*<[\/\s]?(br|/p|/div)[\/\s]?>[\s
\
]*#iu', '#\s+#' ), 
      ' ', "A 19th century Dutch walnut secrétaire à abattant") 
    )
  )
); 

The result is:

string(102) "A 19th century Dutch walnut secrétaire � abattant" 

Why does my Regex breaking special character in PHP?

If you set your character encoding right, there is no issue. See your code run on eval.in.

Make sure to have this in your html document:

<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
</head>

And also save your PHP file as UTF-8 encoded. Depending on your editor this might be an option in the "Save As" dialog, or under the "preferences" or "options" menu.