在symfony css选择器中转义特殊字符或使用通配符

时间:2016-10-27 15:36:05

标签: css symfony

我正在使用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]');

我现在得到空输出。我该如何解决这个问题?

加分问题:是否可以使用通配符? *似乎不适合我。

1 个答案:

答案 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]"]');