アプリ版:「スタンプのみでお礼する」機能のリリースについて

とても初歩的なことを質問します。
CakePHPのnestedListヘルパーで出力すると、ソースは一行で表示されてしまいます。
たとえば以下の場合、
echo
$html->nestedList(array(
$html->link($hoge1,'#1'),
$html->link($hoge2,'#2'),
$html->link($hoge3,'#3'),
$html->link($hoge4,'#4'),
));

ソース上では以下のように一行で出力されます。
<ul><li>ほげ1</li><li>ほげ2</li><li>ほげ3</li><li>ほげ4</li></ul>
(もちろん、ブラウザ上ではなんの問題もありませんが...)

これを
<ul>
 <li>ほげ1</li>
 <li>ほげ2</li>
 <li>ほげ3</li>
 <li>ほげ4</li>
</ul>
このように改行とタブを入れてソースを整形したいのですが、どう書けばいいのでしょうか。

A 回答 (2件)

nestedListの内部を書き換えてできないかと考えてましたが


<li>の前のみタブ、というのがざっと見たところうまくできなさそうと思ったので
単純にnestedListからの戻り値をリプレースしてはどうでしょう?

<?php
$str="<ul><li>ほげ1</li><li>ほげ2</li><li>ほげ3</li><li>ほげ4</li></ul>";

// ul改行
$pattern='/(<ul>)/';
$str=preg_replace($pattern,"$1\n",$str);
// liタブ&改行
$pattern='/(<li>.*?<\/li>)/';
$str=preg_replace($pattern,"\t$1\n",$str);
echo $str;
?>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

試してみたところうまく表示できました。
わざわざnestedListの内部までチェックしていただいて恐縮です。

1つお聞きしたいのですが、上記のようなソースの整形方法はよく使われているのでしょうか。
やはりよほどのことがない限り、ムリに整形せず、そのまま出力したほうが無難なのでしょうか。

お礼日時:2010/12/20 14:30

私自身は他のモジュールが返してくるものに関しては


加工することを前提としたものでない限り手を加えません。
だいたいが私よりwebの知識に富んだ方たちが作ったものなので
もしかしたら何かしら意図があるかもしれないということで。

今回のでしたら改行なしで返ってくるということは
「ソースの見栄えは気にすることじゃないよ」と解釈します。
すでに字下げをされているところに出力するということになると
その分さらにタブを追加して・・・などと労力のわりには実益がなさそうですし。
    • good
    • 0
この回答へのお礼

なるほど。やはりこういった場合には手を加えないほうがよさそうですね。トラブルの発生率が高まるし、労力も増えるしでいいことなさそうです。

ただ、preg_replaceを使った整形方法をご教示くださったのは勉強になりました。

お付き合いくださり、誠にありがとうございました。

お礼日時:2010/12/21 16:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!