Ericson Willians
Ericson Willians

Reputation: 7845

How can I use a new-line character within a tooltip title html attribute inside a single-quoted echo in PHP?

Here's my echo:

echo '
    <div class="col-md-6 info" id="outerDiv">
        <div class="row">
            <strong>
                <a href="#" data-toggle="tooltip" title="'.
                    $estado->dados($value[$c]->estado)->sigla.
                    ': '.
                    $cidade->dados($value[$c]->cidade)->nome.
                    fwrite("\n").$value[$c]->tel1.
                    '" id="title'.$c.'">'.$value[$c]->nome_fantasia.'</a>
            </strong>
                <div id="content'.$c.'" hidden>
                    <div class="row-fluid">
                        <div class="col-md-12">
                            <ul class="list-group">
                                <li class="list-group-item">Razão Social: '.$value[$c]->razao_social.'</li>
                                <li class="list-group-item">CNPJ: '.$value[$c]->cnpj.'</li>
                                <li class="list-group-item">Endereço: '.$value[$c]->endereco.'</li>
                                <li class="list-group-item">Número: '.$value[$c]->numero.'</li>
                                <li class="list-group-item">Complemento: '.$value[$c]->complemento.'</li>
                                <li class="list-group-item">Bairro: '.$value[$c]->bairro.'</li>
                                <li class="list-group-item">Tel1: '.$value[$c]->tel1.'</li>
                                <li class="list-group-item">Tel2: '.$value[$c]->tel2.'</li>
                            </ul>
                        </div>
                    </div>
                </div>
        </div>
    </div>
    '

I've tried to use fwrite("\n"), but it does not work. I really wanted a new-line character inside that tooltip. Is there a cure?

Upvotes: 0

Views: 154

Answers (3)

shennan
shennan

Reputation: 11666

Have you tried using the entity code (&#013;)?

$estado->dados($value[$c]->estado)->sigla . ': ' . $cidade->dados($value[$c]->cidade)->nome . '&#013;' . $value[$c]->tel1 . '" id="title' . $c . '">' . $value[$c]->nome_fantasia

Another suggestion would be to use a heredoc and some formatted breaks:

$anchor = <<<EOT

<a title='Tip
With
Carriage
Returns'>link</a>

EOT;

Then just concatenate the $anchor with the rest of your string.

Another suggestion would be to do this post-page-load with JavaScript:

var space = '\x0A';

element.setAttribute("title", 'Tip' + space + 'With' + space + 'Carriage' + space + 'Returns');

Upvotes: 2

zootropo
zootropo

Reputation: 2491

Lose the echo, close the PHP block and just let the parser output the HTML. If you have short tags enabled, you can embed PHP code inside this HTML using <?= ?>, otherwise you can use <? echo ?> instead.

I think this is a much cleaner way

?>

<div class="col-md-6 info" id="outerDiv">
    <div class="row">
        <strong>
            <a href="#" data-toggle="tooltip" title="<?=$estado->dados($value[$c]->estado)->sigla?>: <?=$cidade->dados($value[$c]->cidade)->nome?>\n<?=$value[$c]->tel1?>" id="title<?=$c?>"><?=$value[$c]->nome_fantasia?></a>
        </strong>

        <div id="content<?=$c?>" hidden>
            <div class="row-fluid">
                <div class="col-md-12">
                    <ul class="list-group">
                        <li class="list-group-item">Razão Social: <?=$value[$c]->razao_social?></li>
                        <li class="list-group-item">CNPJ: <?=$value[$c]->cnpj?></li>
                        <li class="list-group-item">Endereço: <?=$value[$c]->endereco?></li>
                        <li class="list-group-item">Número: <?=$value[$c]->numero?></li>
                        <li class="list-group-item">Complemento: <?=$value[$c]->complemento?></li>
                        <li class="list-group-item">Bairro: <?=$value[$c]->bairro?></li>
                        <li class="list-group-item">Tel1: <?=$value[$c]->tel1?></li>
                        <li class="list-group-item">Tel2: <?=$value[$c]->tel2?></li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>

<?

Upvotes: 1

Codemonkey
Codemonkey

Reputation: 4807

I feel it's as simple as losing the fwrite but still using double quotes..:

echo '
    <div class="col-md-6 info" id="outerDiv">
        <div class="row">
            <strong>
                <a href="#" data-toggle="tooltip" title="'.
                    $estado->dados($value[$c]->estado)->sigla.
                    ': '.
                    $cidade->dados($value[$c]->cidade)->nome.
                    "\n".$value[$c]->tel1.
                    '" id="title'.$c.'">'.$value[$c]->nome_fantasia.'</a>
            </strong>
                <div id="content'.$c.'" hidden>
                    <div class="row-fluid">
                        <div class="col-md-12">
                            <ul class="list-group">
                                <li class="list-group-item">Razão Social: '.$value[$c]->razao_social.'</li>
                                <li class="list-group-item">CNPJ: '.$value[$c]->cnpj.'</li>
                                <li class="list-group-item">Endereço: '.$value[$c]->endereco.'</li>
                                <li class="list-group-item">Número: '.$value[$c]->numero.'</li>
                                <li class="list-group-item">Complemento: '.$value[$c]->complemento.'</li>
                                <li class="list-group-item">Bairro: '.$value[$c]->bairro.'</li>
                                <li class="list-group-item">Tel1: '.$value[$c]->tel1.'</li>
                                <li class="list-group-item">Tel2: '.$value[$c]->tel2.'</li>
                            </ul>
                        </div>
                    </div>
                </div>
        </div>
    </div>
    '

Upvotes: 0

Related Questions