Prepare a block of text to display in php
I need to append the contents of a text file to a string in php line by line. awk and sed are very useful for such things.
Here is the content of the file. It’s a fairly standard bit of bootstrap HTML.
<div class="row">
<div class="col-sm-12">
<ul class="nav nav-tabs nav-tabs-module" style="margin-left: 30px;">
<li class="active"><a data-toggle="tab" href="#module_tab_0">TAB 1</a></li>
<li><a data-toggle="tab" href="#module_tab_1">TAB 2</a></li>
</ul>
</div>
</div>
<div class="tab-content">
<div id="module_tab_0" class="tab-pane active">
<br />This is tab 1
</div>
<div id="module_tab_1" class="tab-pane">
<br />Hello
<br /><br />
This is tab 2
</div>
</div>
I need to replace all of the ” characters with ‘, then start each line with $string.=” and end each line with \n”;
cat divs.txt | sed "s/\"/'/g" | awk '{print "\$string.=\""$0}' | awk '{print $0"\\n\";"}'
- Cat divs.txt simply prints the content of the file.
- This is piped into the sed command which replaces all of the ” with ‘. Notice the escape character \” so that sed ignores the “
- This awk command places the $string.=” at the beginning of each line. Escape characters are required again on the $ and ” so that awk ignores them
- This awk appends \n”; to each line. This time I need to escape the \n otherwise awk just does a carriage return!
The result:
$string.="<div class='row'>\n";
$string.=" <div class='col-sm-12'>\n";
$string.=" <ul class='nav nav-tabs nav-tabs-module' style='margin-left: 30px;'>\n";
$string.=" <li class='active'><a data-toggle='tab' href='#module_tab_0'>TAB 1</a></li>\n";
$string.=" <li><a data-toggle='tab' href='#module_tab_1'>TAB 2</a></li>\n";
$string.=" </ul>\n";
$string.=" </div>\n";
$string.="</div>\n";
$string.="\n";
$string.="<div class='tab-content'>\n";
$string.=" <div id='module_tab_0' class='tab-pane active'>\n";
$string.=" <br />This is tab 1\n";
$string.=" </div>\n";
$string.=" <div id='module_tab_1' class='tab-pane'>\n";
$string.=" <br />Hello\n";
$string.=" <br /><br />\n";
$string.=" This is tab 2\n";
$string.=" </div>\n";
$string.="</div>\n";