这是来自一个类,在preg_match中有一个@符号是什么意思或它的用途?这是否意味着空间?
if (preg_match("@Property Information </td>@",simplexml_import_dom($cols->item(0))->asXML(),$ok))
{
$table_name = 'Property Information';
}
答案 0 :(得分:1)
这只是一个分隔符。它可以是任何其他一对角色。以下都是相同的
"@Property Information </td>@"
"+Property Information </td>+"
"|Property Information </td>|"
"#Property Information </td>#"
"[Property Information </td>]"
...
分隔符用于将正则表达式模式与修饰符分开的目的,例如如果你需要不区分大小写的匹配,你会在分隔符之后添加i
,例如
"@Property Information </td>@i"
"+Property Information </td>+i"
"|Property Information </td>|i"
"#Property Information </td>#i"
"[Property Information </td>]i"
...
有关详细信息,请参阅http://www.php.net/manual/en/regexp.reference.delimiters.php。
答案 1 :(得分:1)
在这种情况下,它被用作pattern delimiter。正如该手册页所说,
使用PCRE功能时,要求图案由分隔符包围。分隔符可以是任何非字母数字,非反斜杠,非空白字符。
经常使用的分隔符是正斜杠(/),井号(#)和波浪号(〜)。
答案 2 :(得分:1)
几乎任何字符 - 出现在第一个位置时 - 都可以用作PCRE分隔符。在这种情况下,它是@
(另一个常见的是/
,但在处理结束标记时,一个不是很好,因为你必须在文本中每个/
转义一次
)
有关详细信息,请参阅http://www.php.net/manual/en/regexp.reference.delimiters.php。
但是,您根本不应该使用Regex进行此检查 - 您只是测试普通字符串是否在另一个字符串中。这是一个合适的解决方案:
$xml = simplexml_import_dom($cols->item(0))->asXML()
if(strpos($xml, 'Property Information </td>') !== false) { ... }
实际上,在处理html / xml时使用字符串运算符并不是很好,但如果你只是做简单的“包含”检查,那通常是最简单的方法。
答案 3 :(得分:1)
每个正则表达式必须以相同的字符开头和结尾。给定正则表达式的作者选择以@
符号开始和结束正则表达式。