我很努力使一个PHP正则表达式的工作。PHP正则表达式不工作,返回主题字符串,而不是正则表达式结果
做正则表达式在JavaScript的工作:
场景1:JavaScript的正则表达式
在PHP: 我经历的XPath获取节点值:
$yearNode = $xpath->query(".//h2/a", $node)[0];
$year = $yearNode->nodeValue;
我把它添加到JSON AJAX回应:
$responseStr[$i]['year'] = $year;
我正在使用ja的响应vascript:
var year = results[j]['year'].match("[0-9][0-9][0-9][0-9]");
这个工作正常,但如果我尝试在PHP中:
场景2:PHP
$yearNode = $xpath->query(".//h2/a", $node)[0];
$yearMatches = preg_match("[0-9][0-9][0-9][0-9]", $yearNode, $matches);
$year = $matches[0][0];
$responseStr[$i]['year'] = $year;
然后尝试得到的结果在javascript:
var year = results[j]['year'];
我得到了整个主题字符串,而不是正则表达式匹配,这与场景1中的php json响应等效,即
$yearNode = $xpath->query(".//h2/a", $node)[0];
出了什么问题?我读过关于PHP的正则表达式的一些文档一样http://php.net/manual/fr/function.preg-match.php,但不能使它工作
我想我可能误解了PHP正则表达式的结果数组
$year = $matches[0][0];
我试过很多的组合,以测试数组内的所有项目,如
$ year = $ matches [x] [0];
或
$年= $比赛[0] [X];
,但不能得到完全相同4位(年)预期的结果,我很容易得到的JavaScript正则表达式案例1中
在此先感谢您的帮助
正则表达式的分隔符。和'print_r()'看看$匹配包含什么。 – mario
正则表达式分隔符是什么意思?你的意思是用print_r替换回显?如果添加的开始''^和结束'$'边界,并确保'$ yearMatches === 1' – crazyghandi