return every row that has search term

i want to return every row that has search term

this code only returns the first row that has search term
<?php
$string="
term1 text
Text term2 text
";
preg_match('^.*term.*^',$string,$matches);
echo $matches[0];
?>

Open in new window

LVL 1
rgb192Asked:
Who is Participating?
 
Beverley PortlockCommented:
The text is in matches[1] but we need to change the regex to include all text on a given line. I have extended the test string to include non-matched lines

<?php
$string="
term1 text
this line does not match
Text term2 text
and this line is a dud too
";
preg_match_all('#([^\n]*?term[^\n]*?)\n#s',$string,$matches,PREG_OFFSET_CAPTURE);

echo "<pre>";
print_r ($matches[1]);
echo "</pre>";

foreach( $matches[1] as $aMatch )
    echo "<br/>{$aMatch[0]} occurs at offset {$aMatch[1]} <br/>";

?>

Open in new window

0
 
Beverley PortlockCommented:
Modified code below

<?php
$string="
term1 text
Text term2 text
";
preg_match_all('#.*?(term).*?#s',$string,$matches,PREG_OFFSET_CAPTURE);
print_r ($matches);
?>

Open in new window

0
 
rgb192Author Commented:
Array ( [0] => Array ( [0] => Array ( [0] => term [1] => 0 ) [1] => Array ( [0] => 1 text Text term [1] => 6 ) ) [1] => Array ( [0] => Array ( [0] => term [1] => 2 ) [1] => Array ( [0] => term [1] => 19 ) ) )

is the output

can

term1 text
Text term2 text


be output
0
 
rgb192Author Commented:
thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.