0

多くの文字列を含むテキスト ファイルを指定します。

たとえば、red applesを検索する場合、次のコード:

$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を検索します。それを行う方法はありますか?

ありがとう。

4

2 に答える 2

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() の使用法に注意してください。

于 2012-12-19T02:41:22.090 に答える
1
$search_inversed = implode(' ', array_reverse(explode(' ', $search)));
于 2012-12-18T21:37:13.730 に答える