求一个正则

cyhcyhhychyc 2013-03-23 10:53:34
下面好像是utf8编码的:
<div class=\"bar\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target=\"_blank\" id=\"comment_name_460013413\" name=\"comment_name_460013413\" href=\"http:\/\/hz.iiiu.com\/red\/click.php?tp=1&cp=4003694&cpp=1000492&url=http:\/\/weibo.com\/2498716605\">lmlog_001<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target=\"_blank\" class=\"s_ico\" href=\"http:\/\/hz.iiiu.com\/red\/click.php?tp=1&cp=4004584&cpp=1000492&url=http:\/\/weibo.com\/\">

我需要写一个正则,把上面内容中的“lmlog_001”匹配出来,因为上面的只是抽取的一小部分编码,还有许多类似格式的,所以需要以“lmlog_001”前后的代码来定位“lmlog_001”。“lmlog_001”本身是变化的,就是可能是数字字母汉字的组合。我看了一下,基本只要把class=\"bar\">及class=\"bar\">后面跟的<\/a>和<a就能定位了。但是因为不懂utf8格式的正则,所以请高手写一下。
说的不是很明白,但是相信只要是懂正则的也就能看懂我要什么了。多谢。
请一定先自己测试一下!
...全文
236 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyhcyhhychyc 2013-03-24
  • 打赏
  • 举报
回复
您用stripslashes把转义符去掉了,但是匹配出来的汉字变成了u4e2du534eu7259u818fu6ce1u6cabu591a,夹杂其它的字符那就还原不了,也不能正确显示了
cyhcyhhychyc 2013-03-24
  • 打赏
  • 举报
回复
你原来多了一个stripslashes,我是直接去匹配的,反正总匹配不出来。
cyhcyhhychyc 2013-03-24
  • 打赏
  • 举报
回复
引用 5 楼 dream1206 的回复:
PHP code?123// $str = stripslashes($str);$p = '#<.+class=\\\"bar\\\".*>.*<a.*>(.+)<\\\/a>#US';preg_match_all($p, $str, $result);
引用 5 楼 dream1206 的回复:
PHP code?123// $str = stripslashes($str);$p = '#<.+class=\\\"bar\\\".*>.*<a.*>(.+)<\\\/a>#US';preg_match_all($p, $str, $result);
这个可以了,我其实写的和你几乎一样哈,但就是你写的是\\\"bar\\\",我写的是\\"bar\\",看来我是没有把双引号给转义了,因为我觉得把\转义后,\又把"转义了,都混在一起了,没有把这些字符都当成“普通”的纯“阅读性”的了
改一下昵称 2013-03-24
  • 打赏
  • 举报
回复
// $str = stripslashes($str);
$p = '#<.+class=\\\"bar\\\".*>.*<a.*>(.+)<\\\/a>#US';
preg_match_all($p, $str, $result);
cyhcyhhychyc 2013-03-23
  • 打赏
  • 举报
回复
引用 1 楼 dream1206 的回复:
你的数据都是英文,正则本身不分什么编码。 PHP code?12345678$str= <<<str<div class=\"bar\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a targ……
里面有“\u5728\u4f18\u9177\u4e0bc”类似这样的编码的。是一个js地址返回的。用一般的正则写法不能匹配这些字符的。
改一下昵称 2013-03-23
  • 打赏
  • 举报
回复
你的数据都是英文,正则本身不分什么编码。
$str= <<<str
<div class=\"bar\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target=\"_blank\" id=\"comment_name_460013413\" name=\"comment_name_460013413\" href=\"http:\/\/hz.iiiu.com\/red\/click.php?tp=1&cp=4003694&cpp=1000492&url=http:\/\/weibo.com\/2498716605\">lmlog_001<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target=\"_blank\" class=\"s_ico\" href=\"http:\/\/hz.iiiu.com\/red\/click.php?tp=1&cp=4004584&cpp=1000492&url=http:\/\/weibo.com\/\">
str;
// 去掉这些多余的转义符,这也应该不是你原始的数据
$str = stripslashes($str);
$p = '#<.+class=\"bar\".*>.*<a.*>(.+)</a>#US';
preg_match_all($p, $str, $result);
var_dump($result[1]);

21,886

社区成员

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

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