2013-12-07 1 views
0

У меня есть файл PHP, в этом файле у меня есть некоторые данные позволяют говоритьИзвлечение информации из файла с помощью maches текста

<This is the content of the text file> 

"dim://realthings1/true" 
"rel://stop1" 
"dim://realthings2/false" 
"rel://stop2" 
"dim://realthings3/false" 
"rel://stop3" 
"dim://realthings4/false" 
"rel://stop4" 

<This is the rest of content> 

Мне нужен код PHP, чтобы извлечь и повторить первый «затемнять: // realthings1/true "dim://realthings1/true , но данные" dim: // ....... "изменяются каждые 1 houre , как извлечь данные из них с php-кодом, который извлекает первое значение" dim: // ... ...»

Я попытался

<?php 
$Text=file_get_contents("test.php"); 
preg_match('/dim\s*:\s*\'([^\']+)\'/',$Text,$Match) 
echo $Match[1] ."\n"; 
?> 

этот код работает отлично ти эти данные

тусклый: «realthings1»

Я пытался изменить этот код ти нет результата! Пожалуйста, помогите!

+0

может быть, это то, что вы хотите 'preg_match ('/ затемнять \ S *: \ S * ([^ \'] +) /», $ Text, $ Match) ' – bansi

+0

это нормально, но эхо не является его эхом everithig там после "dim:" '// realthings1/true" "rel: // stop1" "dim: // realthings2/false" "rel: // stop2" "dim : // realthings3/false "" rel: // stop3 "" dim: // realthings4/false "" rel: // stop4 "' мне нужно только '// realthings1/true' –

ответ

0

если вы хотите только ту линию, которую вы можете использовать ООН жадный флаг U

$Text=file_get_contents("test.php"); 
$Match=array(); 
if (preg_match('/dim\s*:\s*([^\']+)[\'"]/U',$Text,$Match)){ 
    echo $Match[1]; 
} 

Для всех матчей

$Text=file_get_contents("test.php"); 
$Match=array(); 
if (preg_match_all('/dim\s*:\s*([^\']+)[\'"]/U',$Text,$Match)){ 
    print_r($Match[1]); 
} 

Ниже будет соответствовать что-нибудь начиная с dim следует 0 или более пробелов затем: тогда 0 или более пробелов что-либо (что не является «или» или пробелом), а затем «или» или пробелом. и быть жадными. элемент, сопоставленный внутри скобки, - это то, что вы получаете в $Matches[1]. надеюсь, что теперь ясно

/dim\s*:\s*([^\'"\s]+)[\'"\s]/U 
+0

это нормально, но как эхо просто de second dim: // –

+0

, если вы используете 'preg_match_all' вместо' preg_match', тогда '$ Matches [1]' будет и массив всех совпадений. – bansi

+0

cant i ad «пробел» для разделителя '('/ dim \ S *: \ S * ([^ \ '] +) '[\'"]/U», $ Text, $ Match)). скажем, у меня есть "dim: // transfer/true 'здесь space'retry", но мне нужно только эхо '// transfer/true' –

Смежные вопросы