PHP code to reverse the order of words in a string by N words at a time.

There are many post you may find reversing a string by each characters, but in this post we are going to see how to write a PHP program to reverse the entire sentence word by word (order of the word) by a given N words at a time.

Example 1:

Input: This is a short sentence
N: 1
Result: sentence short a is This

Example 2: 

Input: This is a short sentence
N: 2
Result: sentence a short This is

 

Lets see the PHP code:

<html>
<head>
<title>PHP code to reverse the order of a string word by word - Tutorialsmade.com</title>
</head>
<body>
	<h2>PHP code to reverse the order of a string word by word - Tutorialsmade.com</h2>
	<form action="" method="post">
		Input Text: <input type="text" name="string">
		Input N: <input type="number" min="1" max="10" name="n" value="1">
		<button type="submit" name="submit">Submit</button>
	</form>
</body>
</html>

<?php

if(isset($_POST['submit'])){
	$string = $_POST['string'];
	$n = $_POST['n'];
	
	print "<b>Input:</b> ".$string."<br>";
	print "<b>N:</b>".$n."<br>";
	print "<b>Result: </b>".special_reverse($string, $n);
}

function special_reverse($string, $n){
	//explode the string by space
	$str_arr = explode(' ', $string);

	//get the n value
	$num = 1;
	$input_num = $n;

	$i = 0;
	$new_str = '';
	foreach($str_arr as $str){	
		$new_str = $new_str.' '.$str;
		//$new_arr will keep the separated
		$new_arr[$i] = $new_str;

		//if the $input_num is less than $num. reset $num to 1 (else cond.)
		if($input_num > $num){
			$num++;
		}else{
			$i++;
			$num = 1;
			$new_str='';
		}
	}
	
	//krsort to reverse the order of $new_arr
	krsort($new_arr);
	
	//now just implode the $new_arr again to form a sentence
	$final_str = implode(' ', $new_arr);

	return $final_str;

}

Read comments in the above script to understand how it works.

You can see the demo from the below link:

demo

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top