2014-01-05 8 views
0

Я пытаюсь сделать php-скрипт для вывода всех значений внутри hypehref = "* *" из текстового файла.php регулярное выражение, чтобы найти строку в файле

У меня тяжелое время с частью регулярного выражения.

Это то, что у меня есть

$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

+0

Переключить на 'preg_match_all' и проверьте руководство ... – jeroen

+0

Кроме того, вы опечатка, вы использовали "hyperef" в preg_match, но заявил, что«hyperhref "в описании – Magictallguy

ответ

0

Вы можете использовать preg_match_all, чтобы найти все совпадения. Там вы также будете иметь полную часть и только значение гиперэфира, но вы можете использовать только первое.

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

Я добавил if по понятным причинам и i разделителя, так что шаблон будет игнорировать чувствительность к регистру.

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); 
Смежные вопросы