2013-09-10 3 views
0

У меня есть строка, мне нужно найти через тысячи файлов, но есть небольшая разница в каждой строке, так что мне нужна помощь с RegexRegex для символов между "

Линия им ищет это

<img src="images/online-chat.jpg" width="350" height="150" border="0" alt="Title Loans Antelope Valley - Online Chat"/> 

И это всегда будет такой же, за исключением того, альт тег, так и в предыдущем случае, «Название кредиты Антилопа Valley - Интернет-чат». единственна

Может кто-нибудь помочь мне с регулярным выражением, которое ничего найти между меткой alt ""

ответ

1

Шаблон, как это должно работать:

alt="([^"]*)" 

Это будет соответствовать буквального alt=", а затем, кроме ", захваченной в 1-й группе нуля или более символов, за которым следует буквального ".

+0

Я делал это в Dreamweaver и это Ответ помог мне разобраться! – user1789437

0
preg_match('#<img src="images/online-chat.jpg" width="350" height="150" border="0" alt="(.*?)">#', $string, $matches); 

Атрибут alt будет находиться в $matches[1].

0
(?<=alt=")[^"]* 

это дает вам вещь между alt=" и closing " без alt=" and "

0
(?:<img.+alt=")([^"]+)(?:"\/>) 

будет производить:

Array 
(
    [0] => Array 
     (
      [0] => <img src="images/online-chat.jpg" width="350" height="150" border="0" alt="Title Loans Antelope Valley - Online Chat"/> 
     ) 

    [1] => Array 
     (
      [0] => Title Loans Antelope Valley - Online Chat 
     ) 

) 

Или для более атрибутов:

(?:<img\s)(?:src=")([^"]+)(?:"\swidth=")([^"]+)(?:"\sheight=")([^"]+)(?:"\sborder=")([^"]+)(?:"\salt=")([^"]+)(?:"\/>) 

будет производить:

Array 
(
    [0] => Array 
     (
      [0] => <img src="images/online-chat.jpg" width="350" height="150" border="0" alt="Title Loans Antelope Valley - Online Chat"/> 
     ) 

    [1] => Array 
     (
      [0] => images/online-chat.jpg 
     ) 

    [2] => Array 
     (
      [0] => 350 
     ) 

    [3] => Array 
     (
      [0] => 150 
     ) 

    [4] => Array 
     (
      [0] => 0 
     ) 

    [5] => Array 
     (
      [0] => Title Loans Antelope Valley - Online Chat 
     ) 

) 
0

Вы также можете использовать предпросмотр и назад ', чтобы выбрать только значение, например, так:

(?<=alt=")[^"]*(?=") 
0

Попробуйте:

<?php 
$lines = array(
    '<img src="images/online-chat.jpg" alt="Title Loans Antelope Valley - Online Chat 1"/>', 
    '<img src="images/online-chat.jpg" alt="Title Loans Antelope Valley - Online Chat 2"/>', 
    '<img src="images/online-chat.jpg" alt="Title Loans Antelope Valley - Online Chat 3"/>', 
    '<img src="images/online-chat.jpg" alt="Title Loans Antelope Valley - Online Chat 4"/>', 
    '<img src="images/online-chat.jpg" alt="Title Loans Antelope Valley - Online Chat 5"/>' 
); 

$alt_array = array(); 
foreach($lines as $line) { 
    $alt_array[] = getSubstring($line, 'alt="', '"'); 
} 

print_r($alt_array); 

function getSubstring($input, $start, $end) 
{ 
    preg_match("~".preg_quote($start)."(.*?)".preg_quote($end)."~", $input, $output); 
    return $output[1]; 
} 
?> 

Выход:

Array 
(
    [0] => Title Loans Antelope Valley - Online Chat 1 
    [1] => Title Loans Antelope Valley - Online Chat 2 
    [2] => Title Loans Antelope Valley - Online Chat 3 
    [3] => Title Loans Antelope Valley - Online Chat 4 
    [4] => Title Loans Antelope Valley - Online Chat 5 
) 
Смежные вопросы