Это не имеет ничего общего с этим медленным простым HTML-трюком: это не то, как работает PHP, ваша строка parent()->href
не будет интерпретироваться как вызов этих элементов.Если вам это нужно, вы на правильном пути, но вы должны различать функции и атрибуты.Примерно так:
array(
'element' => 'img[src=images/more.gif]',
'traverse' => array(
array('parent','function'),
array('attribute' ,'property');
...
$result = $found
foreach($target[$key]['traverse'] as $step){
switch($step[1]){
case 'function':
$function = $step[0];
$result = $found->$function();
break;
case 'property':
$property = $step[0];
$result = $found->$property;
break;
default:
trigger_error("Unknown step method ".$step[1].": not an property or function",E_USER_ERROR);
}
}
$this->store[$keyz] = $result;
Или это может работать с вашими исходными строками:
array(
'element' => 'img[src=images/more.gif]',
'attribute' => 'parent()->href'));
...
$result = $found;
foreach(explode('->',$target[$key]['attribute']) as $step){
if(substr($step,-2) == '()'){
$function = substr($step,0, strlen($step)-2);
$result = $result->$function();
} else {
$result = $result->$step;
}
}
$this->store[$keyz] = $result;