【发布时间】:2017-03-26 07:08:45
【问题描述】:
我正在努力使 php 正则表达式工作。
在 javascript 中进行正则表达式的工作:
场景 1:javascript 正则表达式
在 php 中: 我通过xpath获取节点值:
$yearNode = $xpath->query(".//h2/a", $node)[0];
$year = $yearNode->nodeValue;
我将它添加到 json ajax 响应中:
$responseStr[$i]['year'] = $year;
我在 javascript 中正则表达式响应:
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];
或
$year = $matches[0][x];
但无法检索我在场景 1 中的 javascript 正则表达式中轻松获得的确切 4 位数(年份)预期结果。
提前感谢您的帮助
【问题讨论】:
-
正则表达式分隔符。和
print_r()看看 $matches 包含什么。 -
正则表达式分隔符是什么意思?你的意思是用 print_r 替换 echo ?
标签: javascript php json regex xpath