请教一下:这个正则表达式怎么写?

ghm 2008-04-06 08:24:04
假设有一字符串,内容如下:
$content="<ReceiptId>111</ReceiptId><ReceiptId>222</ReceiptId><ReceiptId>333</ReceiptId>"
请问用什么样的正则表达式可以获利到第二个<ReceiptId><ReceiptId>标志中的数字222?

...全文
61 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmouki 2008-04-06
  • 打赏
  • 举报
回复
如果按你那样的话我感觉还是这么改一下能好点,
<?php
$content=" <ReceiptId>111 </ReceiptId> <ReceiptId>222 </ReceiptId> <ReceiptId>333 </ReceiptId>";
$reg = "# <ReceiptId>\s*(.*?)\s* </ReceiptId>#";
preg_match_all($reg, $content, $matterns);
var_dump($matterns);
?>
不过还是要看业务需求了,如果需求全是数字的话就不用改了。
zmouki 2008-04-06
  • 打赏
  • 举报
回复
LS有些不妥吧!LZ说有一字符串,也不是光有数字,如果你写成\d,那么, <ReceiptId>abc </ReceiptId>的时候,abc就取不到了。
ghm 2008-04-06
  • 打赏
  • 举报
回复
谢谢,我再试试。
willko 2008-04-06
  • 打赏
  • 举报
回复
csdn论坛的问题,,正则自动加入了空格。。。不过在这里没有影响结果
#是正则界限符

array(2) {
[0]=>
array(3) {
[0]=>
string(28) "<ReceiptId>111 </ReceiptId>"
[1]=>
string(28) "<ReceiptId>222 </ReceiptId>"
[2]=>
string(28) "<ReceiptId>333 </ReceiptId>"
}
[1]=>
array(3) {
[0]=>
string(3) "111"
[1]=>
string(3) "222"
[2]=>
string(3) "333"
}
}
zmouki 2008-04-06
  • 打赏
  • 举报
回复
<?php
$content=" <ReceiptId>111 </ReceiptId> <ReceiptId>222 </ReceiptId> <ReceiptId>333 </ReceiptId>"
preg_match_all("/ <ReceiptId.*?>(.*?) <\/ReceiptId>/",$content,$new);
echo "<pre>";
print_r($new);
echo "</pre>";
?>
ghm 2008-04-06
  • 打赏
  • 举报
回复
测试了一下,楼上的好像不对。#是表示什么意思?
willko 2008-04-06
  • 打赏
  • 举报
回复
<?php
$content=" <ReceiptId>111 </ReceiptId> <ReceiptId>222 </ReceiptId> <ReceiptId>333 </ReceiptId>";
$reg = "#<ReceiptId>\s*(\d+)\s*</ReceiptId>#";
preg_match_all($reg, $content, $matterns);
var_dump($matterns);

?>
ghm 2008-04-06
  • 打赏
  • 举报
回复
偶刚学php啊,正在编写一个网银的自动支付程序,朋友就直接告诉俺一下啦,谢谢了。
Lancker 2008-04-06
  • 打赏
  • 举报
回复
用子适配就可以搞定这个问题了哈

目前对于我来说是很简单的了。

建议你看一下正规表达式相关的教程,细心学一下

嘿嘿~

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧