PHPとHTMLを混在する書き方を調べていましたら、参考になりそうなサイトを見つけました。でもコードがおかしいところがあったので、考えて修正してみました。
コメントをみると、SSさんという人から、下記のような指摘がありまして、timmさんという方が回答をしているのですが、timmさんが言っている意味がよくわかりません。SSさんのコメントが正しいように思えました。
実際に方法5を実行してみると、HTMLの文字列として[$str]が、表示されてしまうわけです。原因はPHPではないHTML部分に、関数を書いても、そのまま文字として表示されてしまうからです。
ちゃんと表示されるように該当部分のコードを書き換えてみました。他にも、いろいろな方法あるでしょうけども。簡単に。