-- Mon Zafra <[EMAIL PROTECTED]> wrote
(on Thursday, 16 October 2008, 03:50 AM +0800):
> Hi all,
> 
> How do I select a node with an attribute with spaces? This code:
> 
> require_once 'Zend/Dom/Query.php';
> $val = 'foo bar';
> $html = '<input type="text" value="' . $val . '" />';
> 
> $dom = new Zend_Dom_Query($html);
> $res = $dom->query('input[value="' . $val . '"]');
> echo(count($res));
> 
> returns 0. I need this to make my controller tests pass.

You need to use either a word match or a substring match:

    // word match:
    $res = $dom->query('input[value~="foo"]');

    // substring match:
    $res = $dom->query('input[value*="foo bar"]');

The first will look for "foo" anywhere in the attribute. The second
looks for "foo bar" anywhere in the attribute.

Strict comparisons often fail because, to be able to do word or
substring matches, we actually have to fudge a little and rewrite the
attribute values to app/prepend empty strings.

-- 
Matthew Weier O'Phinney
Software Architect       | [EMAIL PROTECTED]
Zend Framework           | http://framework.zend.com/

Reply via email to