PHP精确搜索

时间:2017-06-15 12:34:19

标签: php search

所以我有

$q = $_REQUEST["q"];
$f = fopen("address.txt", "r");
while (($line = fgets($f)) !== FALSE) {
   if (strstr($line, $q)) {
       print "<li>found: $line"; 

让我说我有

Street 1 number 122
Street 2 number 22
<{1>}中的

,我想搜索号码address.txt

如何搜索22,但又不是22

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用带有word boundaries的正则表达式来完成此操作。快速举例:

if(preg_match('/\b22\b/', $line)) {

PHP演示:https://eval.in/817207
正则表达式演示:https://regex101.com/r/y9slbd/1/

使用输入的示例($q):

if(preg_match('/\b' . preg_quote($q, '/') . \b/', $line)) {

http://php.net/manual/en/function.preg-quote.php

(尽管如果连接到此示例中,22的示例不会导致任何问题)