タイトルは自明です。php foreach preg_match'd行、次の行を取得
xmlファイルを1行ずつループし、特定の行(その行の属性を取得)と一致させ、その行の次のX行を取得したいとします。
私はこれをしようとしますが、次のX行を取得する方法を理解できないようです。
$file = 'Electric.xml';
$lines = file($file);//file in to an array
foreach($lines as $line){
$reads = element_attributes('WINDOW',$line);
if($reads['class'] == 'Bracelets'){
print_r($reads);
}
if($reads['class'] == 'Handbags'){
print_r($reads);
}
}
function element_attributes($element_name, $xml) {
if ($xml == false) {
return false;
}
// Grab the string of attributes inside an element tag.
$found = preg_match('#<'.$element_name.
'\s+([^>]+(?:"|\'))\s?/?>#',
$xml, $matches);
if ($found == 1) {
$attribute_array = array();
$attribute_string = $matches[1];
// Match attribute-name attribute-value pairs.
$found = preg_match_all(
'#([^\s=]+)\s*=\s*(\'[^<\']*\'|"[^<"]*")#',
$attribute_string, $matches, PREG_SET_ORDER);
if ($found != 0) {
// Create an associative array that matches attribute
// names to attribute values.
foreach ($matches as $attribute) {
$attribute_array[$attribute[1]] =
substr($attribute[2], 1, -1);
}
return $attribute_array;
}
}
// Attributes either weren't found, or couldn't be extracted
// by the regular expression.
return false;
}
は、私は怖いXMLパーサーを使用することはできません。これは整形式のXMLではありません。 –
@Ke。 DOMDocumentでも失敗するのはとても悪いですか? :Oその場合、私はあなたのために感じて、あなたに最高の運を願っています! – ChristianF
はい、その悪い!私はファイルを作成しませんでした。私も選択肢がありません、私はデータが必要です! –