CakePHPの事はあんまり知らないのですが、
CMSの自作の様な事をしたいという前提で回答しますと。
基本
PHP
1[test]りんご[/test]
2[test]ばなな[/test]
3[test]いちご[/test]
を入力フォームに入力させて(or HTMLとしてサーバに保存して)
PHP
1<div class="test">りんご</div>
2<div class="test">ばなな</div>
3<div class="test">いちご</div>
を出力したいのであれば、
PHP
1
2<?php
3
4//再現がめんどくさいので文字列を直接書いていますが、実際にはDBなりHTMLなりから取得して下さい
5$post = "[test]りんご[/test]
6[test]ばなな[/test]
7[test]いちご[/test]";/
8
9
10$input_tags = ["[test]","[/test]"];
11$output_tags = ["<div class='test'>",'</div>'];
12
13echo str_replace($input_tags,$output_tags,$post);
14
という感じにすれば↓の様な出力になります。
<div class='test'>りんご</div>
<div class='test'>ばなな</div>
<div class='test'>いちご</div>
実際に使うには
もちろん、上記のコードでは[test]
と[/test]
のみの決め打ちになっており、対応するタグを増やそうとした場合にはコードの追加が必要になります。
これだけだと使いにくいので、
PHP
1
2$input_tags = ["[test]","[/test]"];
3$output_tags = ["<div class='test'>",'</div>'];
4
の組み合わせをDBに保存してそこから取得するなどするなどすれば、対応タグを増やすことが出来ます。
よくある機能
よくあるCMSの独自タグだと、これに加えてタグにパラメータを与えたり出来ます
[test id=1]リンゴ[/test]
→おいしくて甘いリンゴ:ふじ
[test id=2]リンゴ[/test]
→小ぶりで真っ赤なリンゴ:紅玉
みたいな感じす。
これを仕様とした場合は、単純なstr_replace()
だけだと難しいので、preg_match()
等の正規表現を使ってidの値を抜き出してDB処理をするなどの工夫が必要になってきます。
が、まずは単純な置き換えから作ってみるのが良いかと思いますよ。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。