Finding Elements of an Array

You want to match a pattern found in an array instead of a search string.

Use preg_grep(). It returns an array of values that match a patetrn found in an array.

<html>
<head>
<title>PHP</title>
<meta Name="Author" Content="Hann So">
</head>
<body>
<p>
<?php
if (isset($_POST['submit'])) {
		process_form();
	}
	else {
		display_form();// display form for the first time
	}

function display_form() {
	echo <<<HTML
	<form action = "$_SERVER[SCRIPT_NAME]" method="post">
	Regular Expression for preg_split (include the delimiter):<br />
	<input type="text" name="pattern" size="70" value="/[:,;]/m" /><br />
	<br />
	Regular Expression for preg_grep (include the delimiter):<br />
	<input type="text" name="pattern2" size="70" value="/([a-z])\\1/i" /><br />
	<br />
	Text:<br />
	<textarea name="text" rows="5" cols="50">
	Fruits: apple, orange, banana;
	Vegetables: carrot, tomato, onion
	</textarea><br />
	<input type="submit" name="submit" value="Check" />
	</form>
	<table border>
	<tr bgcolor="lightcyan">
	<th align="left">Regular Expression</th>
	<th align="left">Text</th>
	</tr>
	<tr>
	<td>/[,;] ?/m</td>
	<td>apple;banana,cantaloupe;
	strawberry,watermelon;
	pineapple, fuji apple
	</td>
	</tr>
	<tr bgcolor="lightyellow">
	<td></td>
	<td>
	</td>
	</tr>
	</table>
HTML;
}

function process_form() {
	// stripslashes and trim the strings
	$pattern = stripslashes(trim($_POST['pattern']));
	$pattern2 = stripslashes(trim($_POST['pattern2']));
	$text = trim($_POST['text']);
	echo "The result of finding using <br /><font color=red>$pattern2</font><br />
	against<br /><font color=red>$text</font><br /> is:<br />";
	// match the pattern
	$matches = preg_split($pattern, $text);
	$matches_grep = preg_grep($pattern2, $matches);
	echo "<br />The words containing double letters are:<br />";
	foreach ($matches_grep as $key =>$values) {
		echo $key, " => ", $values, "<br />";
	}
	echo "<br /><a href=\"$_SERVER[SCRIPT_NAME]\">Check again?</a>";

}
?>
</p>
</body>
</html>

View the effect


Regular Expressions | Introduction | Matching a Pattern | Metacharacters | Quantifiers | Character Classes | Pattern Modifiers | Matching and Replacing Patterns | Splitting Strings | Finding Elements of an Array | Finding the nth Occurence of a Match | Choosing Greedy or Nongreedy matches
© 2008: Hann So
email: hso@voyager.deanza.edu