Mailinglisten-Archive |
ANGEL Harald wrote:
>
> Sebastian Mendel schrieb:
>> der oder-Operand '|' müsste in Klammern einschließlich der zu suchenden Strings,
>> '#\(?:[Bild:([0-9]+)\]|\[Bild:([0-9]+),([0-9]+)\])#';
>
> Hallo Sebastian, danke noch mal für deine Hilfe und sry, weil ich ein so altes Thema noch mal aufgreife, aber:
> Das mit den Klammern hab ich verstanden, aber deine "vereinfachte" Form nicht ganz:
>> '#\[Bild:([0-9]+)(?:,([0-9]+))?\]#';
>
> Ich hab jetzt nämlich beim editieren das gleiche Problem:
> Der Tag kann diese 4 Aussehen haben:
> <img src='bild.jpg' id='21' />
> <img src='bild.jpg' id='21' style='width:100px;' />
> <img src='bild.jpg' id='21' style='height:200px;' />
> <img src='bild.jpg' id='21' style='width:100px;height:200px;' />
>
> Ich hab da jetzt einen mir scheint ziemlich umständlichen weg:
>
> $search = "#<img src='(.*)' id='([0-9]+)' style='(?:width:([0-9]+)px;|height:([0-9]+)px;|width:([0-9]+)px;height:([0-9]+)px;)' />#";
>
> Das funktioniert zwar, aber die weite und höhe steht dann immer an unterschiedlichen Stellen im Array.
> Kann man das hübscher hinbekommen?
Schöner schneller und toller wäre so:
<?php
$qt ="
<root>
<img src='bild.jpg' id='21' />
<img src='bild.jpg' id='21' style='width:100px;' />
<img src='bild.jpg' id='21' style='height:200px;' />
<img src='bild.jpg' id='21' style='width:100px;height:200px;' />
</root>
";
function startElement($parser, $name, $attrs)
{
if ($name !='img') return;
print_r($attrs);
}
function endElement($parser, $name)
{
//do nothing :-)
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
if (!xml_parse($xml_parser, $qt, true)) die(sprintf("XML error: %s at
line %d", xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
xml_parser_free($xml_parser);
?>
setzt lediglich vorraus, dass dein qt valides xml ist...
Bei dem Regex müsstest du fürchte ich damit leben, dass die an
verschiedenen Stellen im Array sind...
>
> Danke!
> Harald
Yannik
php::bar PHP Wiki - Listenarchive