PHP和双向文本搜索

时间:2012-12-18 21:26:14

标签: php regex text-search

给定一个包含许多字符串的文本文件。

例如,如果要搜索红苹果,请输入以下代码:

$search = "red apples";
$contents = file_get_contents("file.txt");
$pattern = "/^.*$search*\$/m";
preg_match_all($pattern, $contents, $matches);
implode("\n", $matches[0]);

将返回(连同其他字符串)以下内容:

Plate with many red apples blah blah

我需要找到相同的字符串,但需要搜索 apples red 。有没有办法做到这一点?

感谢。

2 个答案:

答案 0 :(得分:1)

$search_inversed = implode(' ', array_reverse(explode(' ', $search)));

答案 1 :(得分:1)

试试这样:

<?php

$string = 'Lets locate red apple, or even, apple red!';

$search = 'red apple';

$search_parts = ( strpos( ' ', $search ) !== false ) ? explode( ' ', $search ) : array( $search );

preg_match_all( '#(' . preg_quote(  implode( ' ', $search_parts ), '#' ) . ')|(' . preg_quote( implode( ' ', array_reverse( $search_parts ) ), '#' ) . ')#i', $string, $matches );

echo '<pre>' ;
print_r( $matches[0] );
echo '</pre>' ; 

?>

注意使用strpos()和preg_quote()用法以避免正则表达式模式错误。