お酒好きのおしりトラブル対策とは

とても初歩的なことを質問します。
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>
このように改行とタブを入れてソースを整形したいのですが、どう書けばいいのでしょうか。

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qforeachで回った数を表示したい

単純な質問ですみません。
====
//getTestlistは別ファイルで定義済み。
<?
$testlist=getTestlist();
foreach($testlist as $test){
?>


<? } ?>
====
例えば↑こんなふうにforeachで$testlistが存在するだけ回したとします。
そのときに何回まわったか?($testが何件あったか?)だけを表示したいのですが、そんなことってできますか?
表示したい位置は<? } ?>の外側にと考えています。
あさってな質問でしたらすみません。
phpVer 4.3

よろしくお願いいたします。

Aベストアンサー

<?
$testlist=getTestlist();
$n=0;
foreach($testlist as $test){
$n++;
?>
<?}?>

<?=$n?>回
とかでよいかと思います。

途中でbreakなどが無ければ
<? echo count($testlist) ?>でも良いかも知れません。


人気Q&Aランキング

おすすめ情報