используя PHP preg_match - PullRequest
       3

используя PHP preg_match

0 голосов
/ 16 мая 2011

Мне нужно найти конкретную строку текста из нескольких строк текста

Итак, у меня есть текстовый файл с несколькими строками текста, например:

JOHN
MIKE
BEN
*BJAMES
PETE

Я прочиталэто содержимое в массиве с каждой строкой текста, помещенной в отдельный элемент массива.

Затем я проверил каждый элемент массива, чтобы найти строку, которая начинается, скажем: * B

то есть:

if ( preg_match( "/^\*(B)/",$contents[$a] ) )

почему это не работает?

Ответы [ 3 ]

1 голос
/ 16 мая 2011

Рассмотрим следующий код:

$regex = "%\*B(.*?)%is"; 

if (preg_match($regex, $contents[a]))  {  /// do something }

Также этот слайд может оказаться очень полезным для изучения регулярных выражений:

http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/

0 голосов
/ 16 мая 2011

У меня работает следующее (где $ txt - ваши исходные данные):

foreach ( explode("\n", $txt) as $a ) {
    if ( preg_match( "/^\*B/", $a ) ) {
        echo "**MATCH " . $a . "<br/>";
    }
}   
0 голосов
/ 16 мая 2011

Я бы не использовал здесь двойные кавычки, потому что \ это escape-последовательность:

if ( preg_match( '/^\*(B)/',$contents[$a] ) )

Это работает здесь для меня, хотя даже с двойными кавычками, так что вы можете проверить, что такое $contents[$a]:

$myline = "*BJAMES";
if( preg_match( "/^\*(B)/", $myline) )
{
  echo "Yes\n";
}
...