Соответствие атрибуту SRC тега img с помощью preg_match

Я пытаюсь выполнить preg_match для извлечения атрибута SRC из первого тега img в статье (в этом случае, сохраненный в $row-> introtext).

preg_match('/\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\']*)/i', $row->introtext, $matches);

Вместо того, чтобы получить что-то как

images/stories/otakuzoku1.jpg

от

<img src="images/stories/otakuzoku1.jpg" border="0" alt="Inside Otakuzoku's store" />

Я становлюсь справедливым

0

regex должен быть правильным, но я не могу сказать, почему это, кажется, соответствует атрибуту границы а не атрибуту src.

С другой стороны, если у Вас было терпение читать настолько далеко, не пропуская прямо к полю ответа и вводя 'использование синтаксический анализатор HTML/XML', может хорошее учебное руководство для одного быть рекомендованным, поскольку я испытываю затруднения при нахождении один вообще, это применимо к PHP 4.

PHP 4.4.7

14
задан KyokoHunter 1 February 2010 в 21:36
поделиться

3 ответа

Если вы не нуждаетесь в реализации INotifyPropertyChanged для класса, к которому вы привязываетесь.

Кроме того, если требуется немедленное обновление предмета ListBox , необходимо изменить его при вводе в TextBox . По умолчанию свойство TextBox.Text обновляет свой источник при потере фокуса, но это можно изменить, установив привязку StartSourceTrigger на PropertyChanged :

{Binding Source={...}, Path=Whatever, UpdateSourceTrigger=PropertyChanged}
-121--2748795-

Ioc.Resolve по существу является образец локатора служб. Она имеет свое место, но не идеальна. Инжекция конструктора предпочтительна с точки зрения архитектуры, поскольку зависимости более явны, в то время как SL скрывает зависимости внутри класса. Это снижает тестопригодность и делает процесс более сложным, чем это необходимо.

Если позволите, я бы посоветовал вам прочитать мою серию о методах уменьшения связи кода, которая охватывает SL, DI и IoC.

-121--1143754-

Неверное выражение. Попробуйте:

preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $row->introtext, $matches);

Обратите внимание на удаление скобок вокруг img и src и некоторые другие очистки.

38
ответ дан 1 December 2019 в 06:19
поделиться

Вот как это сделать со встроенными функциями (php >= 4):

$parser = xml_parser_create();
xml_parse_into_struct($parser, $html, $values);
foreach ($values as $key => $val) {
    if ($val['tag'] == 'IMG') {
        $first_src = $val['attributes']['SRC'];
        break;
    }
}

echo $first_src;  // images/stories/otakuzoku1.jpg
5
ответ дан 1 December 2019 в 06:19
поделиться

Из Java 5

Scanner sc = new Scanner();
sc.useDelimiter("\\D+"); // skip everything that is not a digit
List<Coord> result = new ArrayList<Coord>();
while (sc.hasNextInt()) {
    result.add(new Coord(sc.nextInt(), sc.nextInt()));
}
return result;

EDIT: Мы не знаем, сколько координат передано в строке coords .

-121--3095777-

Из того, что я понимаю в вашем вопросе, видно, что вы хотите применить перестановку, указанную в списке . Это делается путем указания другого списка (давайте назовем его p ), который содержит индексы элементов исходного списка , которые должны появиться в переставленном списке . Затем с помощью p можно создать новый список , просто подставив элемент в каждой позиции на позицию, индекс которой находится в этой позиции, в p .

def apply_permutation(lst, p):
    return [lst[x] for x in p]

arr=list("abcde")
new_order=[3,2,0,1,4]

print apply_permutation(arr,new_order)

Печать ['d', 'c', 'a', 'b', 'e'] .

Фактически создается новый список , но он может быть тривиально изменен для перестановки исходного «на месте».

-121--789212-

Попробуйте:

include ("htmlparser.inc"); // from: http://php-html.sourceforge.net/

$html = 'bla <img src="images/stories/otakuzoku1.jpg" border="0" alt="Inside Otakuzoku\'s store" /> noise <img src="das" /> foo';

$parser = new HtmlParser($html);

while($parser->parse()) {
    if($parser->iNodeName == 'img') {
        echo $parser->iNodeAttributes['src'];
        break;
    }
}

, который произведет:

images/stories/otakuzoku1.jpg

Он должен работать с PHP 4 .x.

2
ответ дан 1 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: