is there a way to create a function that uses values from the statement inside of brackets.

ex.

myFunction(){
      //data here
}

if not, what i am trying to do is get a html tag and check/modify without having it inside of a variable or echo tag.

for example, i want to do the equivilent of this:

<?php 
$data ={
?>
test
<?php
}
myFunction($test);
?>

i do not want to use javascript for this although it would be easier.
thanks!

Recommended Answers

All 8 Replies

Although the syntax of your example is incorrect, yes, you can create a function to manipulate the data.

eg.

<?php
function myFunction($input) {
      $output = strtolower($input);
      return $output;
}

$data = 'TEST';
$result = myFunction($data);

echo $result;
?>

if not, what i am trying to do is get a html tag and check/modify without having it inside of a variable or echo tag.

the function i am writting needs to take the data contained in a statement>

<?php
checkConfig(){
?>
<input type="text" name="input" />
<?php
}
?>

then check if the configuration applies to it and then return the altered html.
i dont have issues with the "meat" of the function.
i will be constantly changing the data that i want to run through checkConfig() so putting the data in a variable ex. <?php $data="<input....."; ?> would not be efficient or helpful.

maby you can get the same results with a class?

Anything that is outside PHP tags is not available to PHP to manipulate.

Its hard to understand exactly what you are trying to do - why do you wish to manipulate the HTML? What is "the configuration". What is "the data contained in a statement"?

Why not just have PHP output the correct HTML based on your "configuration"?


Matti Ressler
Suomedia

i wrote the below script but it is not done

note: what i will eventually write is not as basic as just bolding the text. i just put that there as an example.

example check function

<?php 
function check($d){
   require('config.php'); // contains $boldtext = true;
   if($boldtext){
         return "<b>".$d."</b>";
    }
}?>

example data:

<?php class data{function get(){  ?>
This is the text that will go through the check() function
<?php } function ret($string){echo $string;}}$data = new data(); ?>


<?php
$data->ret(check($data->get()));
?>

i dont need to "technicaly" or "directly" manipulate the html, i just need to grab the html and then echo it modified.

let me rephrase this...

when i run this....
<?php function test(){ ?>
data
<?php } ?>

everytime a run test() in php, the html outside of the tags is outputted (data)

i want to take the data in test() and be able to do anything with it that i could do with a normal string.

i DO NOT want to do this.
echo "html here..";

or

<?php
$data = <<<_
html here...
_;
echo $data;
?>

i want to have the text outside of the php tags, grab it, and put it into string so i can echo it later. I cant quite phrase why i need to have the origional html outside of the php tags but you will just have to trust me that it is what i want. I dont know if i am on the right track with using a function to get the data, but i cant find any other way to get it,

i have tried doing something like this: <?php function test(){ return ?>html here...<?php ; } ?>
but nothing is returned.

Thanks for your help so far.

i am sorry for the triple post, i truly am... but i solved this issue after a day's work of googling and thought i could save people the same trouble by posting my solution here. i guess a moderator could delete by past two posts or something.

any way...
i discovered the use of buffering data before it reaches the browser.

<?php 
//function that gets html
function getHTML($container_function){
	//johndm.com - gets html that results from
	//a function. example usage:
	//		<?php function foo(){ ?|> bar <?php } ?|>
	//		echo "<b>".getHTML("foo")."</b>";
	
	ob_start();ob_clean(); //start buffer
	call_user_func($container_function); //call container function
	$data=ob_get_contents(); //get data
	ob_end_clean(); //remove output from function
	return $data; //return html
	
} 

//example usage

function foo(){ ?>
<b>foo</b>
<?php } 
$d=getHTML("foo"); 

//now that the html outputted by the
//function is in a string, you can do anything
//to it you could do to a string.

echo "i am a ".$d." bar";
echo "<br />";
echo "i am ".strlen($d)." chars long";
echo "<br />";
echo "i have ".substr_count($d,">")." '>'s in me";
echo "<br />";
echo "my html looks like this: ".htmlentities($d);

//not only can it get html that is not inside
//of php tags, it can also let you modify 
//echo/printed data from a function also.
?>

Perhaps something like this?

<?php
function myfunction($buffer) {
	return str_replace('hello', 'goodbye', $buffer);
}
$mystuff = ob_start("myfunction");
?>
I am here to say hello
<?php
ob_end_flush();
?>

Matti Ressler
Suomedia

commented: gives good solutions while having much patience with my extreemly ADD posts +2

thanks! that does work simpler than my method.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.