我正在使用Symfony\Component\DomCrawler\Crawler
包来查找名称中包含多个css特殊字符的表单
<input name="myfield[0].thing">
我正在使用
$messageElement = $crawler->filter('input[name=myField[0].thing]');
return $messageElement->attr($attribute);
但是我收到了错误
Symfony \ Component \ CssSelector \ Exception \ SyntaxErrorException:预期&#34;]&#34;,但找到了。
显然这是因为symfony css选择器使用[ ]
来包含属性。所以,如果我尝试逃脱所有特殊的字符
$crawler->filter('input[name=myField\[0\]\.thing]');
我现在得到空输出。我该如何解决这个问题?
加分问题:是否可以使用通配符? *
似乎不适合我。
答案 0 :(得分:1)
如果你封装字段名称它应该可以工作,试试这个:
$messageElement = $crawler->filter('input[name="myField[0].thing"]');
return $messageElement->attr($attribute);.
对于红利问题,您可以使用类似于此处建议的正则表达式匹配:wildcard * in CSS for classes
// For matching strings starting with a certain thing notice the ^=
$messageElement = $crawler->filter('input[name^="myField[0]"]');
// For matching strings containing with a certain thing notice the *=
$messageElement = $crawler->filter('input[name*="myField[0]"]');