我正在使用 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: Expected "]", but found.
显然这是因为 symfony css 选择器使用 [ ]
来包含属性。所以如果我尝试转义所有特殊字符
$crawler->filter('input[name=myField\[0\]\.thing]');
我现在得到空输出。我该如何解决这个问题?
额外问题:是否可以改用通配符? *
似乎对我不起作用。
最佳答案
如果你封装它应该工作的字段名称,试试这个:
$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]"]');
关于css - 转义symfony css选择器中的特殊字符或使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40288782/