php正则表达式在文件中查找字符串

时间:2014-01-05 01:23:34

标签: php regex

我正在尝试制作一个php脚本,从文本文件中输出hypehref =“ * *”中的所有值。

我在使用正则表达式部分时遇到了困难。

这就是我所拥有的

$Vdata = file_get_contents('file.txt');
preg_match( '/hyperef="(.*?)"/', $Vdata, $match );
echo '<pre>'; print_r($match); echo '</pre>'

我的结果是:

Array
(
    [0] => hyperef="http://lookbook.nu/look/5709720-Choies-Silvery-Bag-Rosewholesale-Punk-Style/hype"
    [1] => http://lookbook.nu/look/5709720-Choies-Silvery-Bag-Rosewholesale-Punk-Style/hype
)

[0]不正确,它包括我正在搜​​索的部分...我想要的只是在hypehref =“

之后的结果

第二个结果[1]是正确的

我的文件应该给了我大约10个结果..不仅仅是2 ...

任何想法为什么? THX

2 个答案:

答案 0 :(得分:1)

您可以使用preg_match_all查找所有匹配项。在那里你也将拥有完整的部分,只有hyperef的价值 - 但你只能使用前者。

if (preg_match_all('/hyperef="(.*?)"/i', $Vdata, $result)) {
    $matches = $result[1]; //only values inside quotation marks
    print_r($matches);
} else
    print "nothing found";

我出于显而易见的原因添加了ifi分隔符,因此模式将忽略区分大小写。

答案 1 :(得分:0)

$pattern = "/\bo'reilly\b/i"; // only O'Reilly
$ora_books = preg_grep($pattern, file('filed.txt'));

var_dump($ora_books);

示例2

$fh = fopen('/path/to/your/file.txt', 'r') or die($php_errormsg);
while (!feof($fh)) {
$line = fgets($fh);
if (preg_match($pattern, $line)) { $ora_books[ ] = $line; }
}
fclose($fh);