我有一个代码,但我无法弄清楚为什么它给我一个错误:
Warning: preg_match(): Unknown modifier '<'
这是片段
$pattern = "/<tr.*?data-eventid=\"(\d+)\"/" . // id
"<td.*?>\s{0,}.*\s(.*?)<div.*/?>\s(.*?)<\/td>\s{0,}" . // Day and Date
"<td.*?>(.*?)<\/td>\s{0,}" . // Time
"<td.*?>(.*?)<\/td>\s{0,}" . // Currency
"<td.*?>\s{0,}<div.*?>(.*?)<\/div>\s{0,}<\/td>\s{0,}" . // Impact
"<td.*?>\s{0,}<div.*?>(.*?)<\/div>\s{0,}<\/td>\s{0,}" . // Indicator
"<td.*?>\s{0,}<div.*?>(.*?)<\/div>\s{0,}<\/td>\s{0,}" . // Detail
"<td.*?>\s{0,}(.*?)\s{0,}<\/td>\s{0,}" . // Actual
"<td.*?>(.*?)<\/td>\s{0,}" . // Forecast
"<td.*?>(.*?)<\/td>\s{0,}". // Previous
"<td.*?>\s{0,}<div.*?>(.*?)<\/div>\s{0,}<\/td>\s{0,}/ims"; // Chart 忽略
我很困惑在哪里寻找那个&lt;符号..
最好的问候
答案 0 :(得分:2)
首先,严肃的,哇。这不是我对我最大的敌人的正常表达。
"/<tr.*?data-eventid=\"(\d+)\"/"
^
"<td.*?>\s{0,}.*\s(.*?)<div.*/?>\s(.*?)<\/td>\s{0,}"
^
那些需要被转义,因为它们被用作分隔符。不转义它们会使preg
认为表达式结束,尾随字符将被视为修饰符。
你应该真正研究一个合适的HTML解析器,这很疯狂!
另请参阅:DOMDocument
答案 1 :(得分:1)
第一行:
$pattern = "/<tr.*?data-eventid=\"(\d+)\"/" .
应该是
$pattern = "/<tr.*?data-eventid=\"(\d+)\"\/" .