how to get automatic converted 'echo' of php from html code? - php

I would like to easy to get converted code that 'echo' of php code from html code.
For example, Just like this.
http://www.accessify.com/tools-and-wizards/developer-tools/html-javascript-convertor/
This is a convert tool for JS printing code from html.
Conclude, I would like to see below
from
<div id="foo">
<div id="bar">
</div>
</div>
to
echo '<div id="foo">';
echo '<div id="bar">';
echo '</div>';
echo '</div>';
Thank you for read.

Not sure if this is what you are looking for but you can echo multiple lines of text like this:
echo <<< EOT
<div id="foo">
<div id="bar">
</div>
</div>
EOT;

Related

Echo gives different output from only html

I have this code:
echo " <div class=\"col-md-4 col-lg-3\"> "
. get_sidebar() ."
</div> ";
when I use it, sidebar doesnt show like col-md-4, it is full width.I want to use it as a sidebar.
but when I use the below html code instead of php function, page seems like how I want:
<div class="col-md-4 col-lg-3">
<?php get_sidebar(); ?>
</div>
what is the problem?
Problem is, that the function get_sidebar() is making echo by itself. It is not returning HTML code, which you could join with your HTML code.
This should work:
echo '<div class="col-md-4 col-lg-3">';
get_sidebar();
echo '</div>';

How to output html from php script that also contains '<?php ?>'?

I have the following code in php and I am failing to output what is contained in the 'include_once('aux_files/requestAuthParticip_aux.php')' line. I suspect I have not got the syntax correct but do not know how to fix this. please can someone advise?
<?php
$requestMemBox = '
<div id="topAuth">
<div id="authorHeading" data-pubid='.$pubID.'>Authors Taking Questions</div>
<div id="inviteAuthor">
<input id="searchAutorInvite" type="text" placeholder="Invite Author">
<div id="wrapSuggestAuthor"></div>
</div>
</div>
<div id="wraplistOfAuthors">
<?php include_once('aux_files/requestAuthParticip_aux.php'); ?>
</div>
';
?>
You can use ob_get_contents();
<?php
ob_start();
include('aux_files/requestAuthParticip_aux.php');
$output .= ob_get_contents();
ob_end_clean();
?>
<?php
$requestMemBox = '
<div id="topAuth">
<div id="authorHeading" data-pubid='.$pubID.'>Authors Taking Questions</div>
<div id="inviteAuthor">
<input id="searchAutorInvite" type="text" placeholder="Invite Author">
<div id="wrapSuggestAuthor"></div>
</div>
</div>
<div id="wraplistOfAuthors">
'. $output .'
</div>';
?>
You're trying to assign an include to a variable, which isn't going to work, but you're also doing it in the middle of a string, which is definitely not going to work.
To achieve what you want, you should exit PHP mode, pull in the file's contents to append to your string, then re-enter PHP mode to continue processing as much as you want.
If the thing you're importing contains text you want inside your variable (which is how you're trying to use it right now), then something like this is probably what you want:
<?php
$requestMemBox = '
<div id="topAuth">
<div id="authorHeading" data-pubid='.$pubID.'>Authors Taking Questions</div>
<div id="inviteAuthor">
<input id="searchAutorInvite" type="text" placeholder="Invite Author">
<div id="wrapSuggestAuthor"></div>
</div>
</div>
<div id="wraplistOfAuthors">';
$requestMemBox .= file_get_contents('aux_files/requestAuthParticip_aux.php');
$requestMemBox .= '</div>';
?>
If your included script includes some actual functionality, then you really ought to include it up front and grab its value using a function call, and append that to your string.
replace this line
<?php include_once('aux_files/requestAuthParticip_aux.php'); ?>
with
';
ob_start();
include_once('aux_files/requestAuthParticip_aux.php');
$requestMemBox .= ob_get_clean();
$requestMemBox .= '</div>';
Is one way!
look up ob_start(); to see whats going on here.

Simple html dom doesn't work properly

I have a problem with simple html dom on php 5.5.8. I have code like that:
//Getting page content
$t=$this->curl->getResponse();
//Show page content
echo $t;
//Parse with simple html dom and show result
$dm=str_get_html($t);
echo $dm->save();
After I run the code, I see that
echo $t;
returns something like that:
<output omitted>
<span style="display:block;">ORGANIZATION CODE:123456789ABCD</span></div>
</div><br><div id="pageTitle">
<h1>Select your flights</h1>
</div>
<div id="yellowheader"></div>
<div id="navDiv">
<ol id="tripmeter">
<ul><span class="tripmeterNotSelected">Search Flight</span></ul>
<ul id="tripmeterLink"><span id="tripmeterSelected">Select Flight</span><div id="tripmeterTail"></div>
</ul>
<ul><span class="tripmeterNotSelected">Guest Details</span></ul>
<ul><span class="tripmeterNotSelected">Add-Ons</span></ul>
<ul><span class="tripmeterNotSelected">Payment</span></ul>
<ul><span class="tripmeterNotSelected">Itinerary Receipt</span></ul>
</ol>
</div>
</div>
<div id="selectMainBody" class="main">
<div id="errorDiv"></div><input type="hidden" name="xxxxxxxxxxx" id="xxxxxxxx"><div id="tourBasingDialog" style="display:block;"><br><center>
<output omitted>
While
echo $dm->save();
returns
<output omitted>
<span style="display:block;">ORGANIZATION CODE:123456789ABCD</span>
</div> </div><br></div>
<div id="selectMainBody" class="main"> <div id="errorDiv"></div>
<input type="hidden" name="xxxxxxxx" id="xxxxxxx">
<div id="tourBasingDialog" style="display:block;"><br>
EOF
As you can see, after str_get_html() as save() page content changed and cutted. Why it happened?
you're missing something at some point, but Simple HTML Dom Parser working fine.
I copied your html into file, loaded that file using file_get_contents('content.htm'); and printed that stuff.
and hence, after calling the $html->save(); displayed and got the same output.
require_once 'dom.php';
$html = file_get_contents('content.htm');
echo "<h2>Complete File</h2>";
echo $html ;
$html = str_get_html($html);
echo "<hr />";
echo "<h2>After calling save()</h2>";
echo $html->save("dump.html"); //save stuff to dump.html file
and that gave me this output
output of dump.html

Add HTML elements to the current page using PHP

So I have the need to dynamically add html content using php which isnt the tricky part but I'm trying to put the HTML into a different location in the document than where the PHP is being run. So for example:
<div id="firstDiv">
<?php
echo "<div id=\"firstDivA\"></div>";
echo "<div id=\"secondDivA\"></div>";
?>
</div>
<div id="secondDiv">
</div>
But I want to be able to place the some HTML inside "secondDiv" using the PHP that is executed in the "firstDiv". The end result should be:
<div id="firstDiv">
<div id="firstDivA"></div>
</div>
<div id="secondDiv">
<div id="secondDivA"></div>
</div>
But I have no idea how to go about doing that. I read about some of the DOM stuff in PHP 5 but I couldn't find anything about modifying the current document.
You can open/close "blocks" of PHP wherever you like in your HTML
<div id="firstDiv">
<?php echo '<div id="firstDivA"></div>'; ?>
</div>
<div id="secondDiv">
<?php echo '<div id="secondDivA"></div>'; ?>
</div>
You can also capture the output if necessary with ob_start() and ob_get_clean():
<?php
$separator = "\n";
ob_start();
echo '<div id="firstDivA"></div>' . $separator;
echo '<div id="secondDivA"></div>' . $separator;
$content = ob_get_clean();
$sections = explode($separator, $content);
?>
<div id="firstDiv">
<?php echo $sections[0]; ?>
</div>
<div id="secondDiv">
<?php echo $sections[1]; ?>
</div>
Why not just move the relevant code to the right place?
<div id="firstDiv">
<?php
echo "<div id=\"firstDivA\"></div>";
?>
</div>
<div id="secondDiv">
<?php
echo "<div id=\"secondDivA\"></div>";
?>
</div>
The .php file is continuous thus if you have two separate <?php ?> tags they will be able to share the same variables.
<div id="firstDiv">
<?php
echo "<div id=\"firstDivA\"></div>";
$div2 = "<div id=\"secondDivA\"></div>";
?>
</div>
<div id="secondDiv">
<?php echo $div2 ?>
</div>
This will give the desired effect. (Demonstrates the use of variables)
I'm not sure what you're asking. Perhaps just add an echo statement to the second div.
<div id="firstDiv">
<?php echo "<div id=\"firstDivA\"></div>"; ?>
</div>
<div id="secondDiv">
<?php echo "<div id=\"secondDivA\"></div>"; ?>
</div>
Or do you mean you want to make DIV changes after PHP? Try jQuery!
Or do you mean you want to make DIV changes before PHP is finished? Perhaps phpQuery is good for you then.
If you want to work with XML-data (read XHTML), you'd rather use an appropriate XML processor.
DomCrawler is an excellent to work with DOM. It works with the native DOM Extension and therefore is fast and widely used.
Here an example from the doc on how to add content:
$crawler = new Crawler();
$crawler->addHtmlContent('<html><div class="foo"></div></html>');
$crawler->filter('div')->attr('class') // returns foo

PHP - indent block of html

Let's say I have the following code:
<?php
echo "<div id=\"root\">";
echo "<div id=\"child_of_root\">";
echo "<img src=\"picture1.png\">";
echo "<img src=\"picture2.png\">";
echo "<img src=\"picture3.png\">";
echo "<img src=\"picture4.png\">";
echo "<img src=\"picture5.png\">";
echo "</div>";
echo "</div>";
?>
If I ran this the following HTML would be rendered all inline without any line breaks:
<div id="root"><div id="child_of_root"><img src="picture1.png"><img src="picture2.png"><img src="picture3.png"><img src="picture4.png"><img src="picture5.png"></div></div>
If I ran the following code:
<?php
echo "<div id=\"root\">\n";
echo "\t"."<div id=\"child_of_root\">\n";
echo "\t\t"."<img src=\"picture1.png\">"."\n";
echo "\t\t"."<img src=\"picture2.png\">"."\n";
echo "\t\t"."<img src=\"picture3.png\">"."\n";
echo "\t\t"."<img src=\"picture4.png\">"."\n";
echo "\t\t"."<img src=\"picture5.png\">"."\n";
echo "\t"."</div>"."\n";
echo "</div>";
?>
It wound render the following beautiful HTML:
<div id="root">
<div id="child_of_root">
<img src="picture1.png">
<img src="picture2.png">
<img src="picture3.png">
<img src="picture4.png">
<img src="picture5.png">
</div>
</div>
Is there a way I could achieve these beautiful indents without having to put \t before every line I want to indent. I mean so that I can indent a block instead of one line.
For one thing, it's HTML markup, so it doesn't matter how it's formatted, the browser renders it all the same. Using a tool like Firebug can give you a much better way of navigating HTML in your web-pages.
On another note, you don't have to continually use echo commands to output HTML. PHP is more-or-less a templating language in itself, so you could just exit PHP, output your HTML in your own format, and then re-enter PHP.
For example:
<?php // ... your code before this ... ?>
<div id="root">
<div id="child_of_root">
<img src="picture1.png">
<img src="picture2.png">
<img src="picture3.png">
<img src="picture4.png">
<img src="picture5.png">
</div>
</div>
<?php // ... your code after this ... ?>
If your output needs some level of dynamism to it, you can always use PHP to add in loops and whatnot.
<?php // ... your code before this ... ?>
<div id="root">
<div id="child_of_root">
<?php for ($x = 1; $x <= 5; $x++): ?>
<img src="picture<?php echo $x; ?>.png">
<?php endfor; ?>
</div>
</div>
<?php // ... your code after this ... ?>
If you still need formatted HTML, maybe for displaying code samples or something, you'll either have to continue manually using \n and \t, or you could check out the PHP Tidy extension, which is built for formatting HTML.
First of all use:
echo '<img src="picture1.png">';
instead of
echo "<img src=\"picture1.png\">";
Code is much more clear.
If you want to return HTML code in PHP, there is no other way to do indents.
However why you want to print HTML code in PHP ? Can't you just exit PHP block here ?
<?php
// do something and exit PHP block
?>
<div id="root">
<div id="child_of_root">
<img src="picture1.png">
<img src="picture2.png">
<img src="picture3.png">
<img src="picture4.png">
<img src="picture5.png">
</div>
</div>
<?php
// do again something in PHP
?>
I would suggest using HEREDOC for this. It's best for holding large blocks of HTML and Text that you wish to retain formatting:
//Note that I used spaces and not tabs, but that's only due to the post editor.
echo <<<HTML
<div id="root">
<div id="child_of_root">
<img src="picture1.png">
<img src="picture2.png">
<img src="picture3.png">
<img src="picture4.png">
<img src="picture5.png">
</div>
</div>
HTML;
You can also do
$variable = <<<OPENINGTAG
text
text
text
OPENINGTAG;
echo $variable;
Variables will also be parsed inside HEREDOC strings. Just be careful of the ending tag, it's very temperamental. No spaces before or after on it's line. I don't even know if comments are allowed.
Here it is using Dominic Barnes example with a loop:
<?php
echo <<<HTML
<div id="root">
<div id="child_of_root">
HTML;
for ($x = 1; $x <= 5; $x++)
{
echo <<<HTML
<img src="picture$x.png">
HTML;
}
echo <<<HTML
</div>
</div>
HTML;
?>
could also do:
<?php
$output = <<<HTML
<div id="root">
<div id="child_of_root">
HTML;
for ($x = 1; $x <= 5; $x++)
{
$output .= <<<HTML
<img src="picture$x.png">
HTML;
}
$output .= <<<HTML
</div>
</div>
HTML;
echo $output;
?>
NOWDOC is also available in 5.3+ which act as single quoted strings with no variable parsing.
HEREDOC and NOWDOC strings can be concatenated on to in the same way as normal strings.
If you put your picture ids in an array, you can do a foreach() loop that echoes each of the images with the new line and tab characters in front without having to code it by hand. E.g.
echo '<div id="root">\n';
echo '\t<div id="child_of_root">\n';
$images = array('picture1', 'picture2', 'picture3', 'picture4', 'picture5');
foreach ($images as $image) {
echo '\t\t<img src="'.$image.'.png">\n';
}
echo '\t</div>\n';
echo '</div>';
I tried Tidy, but for some reason no matter how I configure it, it won't seem to indent. However, somebody else has written some code that will:
PHP function for cleaning up HTML and JavaSctipt code
There are also some intelligent guidelines for avoiding the need for such code:
Get beautifully indented HTML with your PHP templates: two rules to follow
Also: fredsco.com/programming/indenting-html-output-in-php
Here is an example that worked for me:
<?php
echo '
<div style="margin-left: 100px">
<div id="root">
<div id="child_of_root">
<img src="picture1.png" /><br />
<img src="picture2.png" /><br />
<img src="picture3.png" /><br />
<img src="picture4.png" /><br />
</div>
</div>
</div>
';
?>

Categories