如何用正则表达式去除超链接

banporen 2011-02-28 10:04:27
想用preg_replace()将$article中所有class=“axxa”超链接换成普通文本,不知道怎么写正则表达式和函数的参数?
例如$article=<a class="axxa">kdkd</a>,要变成kdkd

preg_replace("","",$article)

求助各位,正则表达式和第二个参数该怎么写呀?
...全文
372 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baicunren1 2011-10-23
  • 打赏
  • 举报
回复
$article1="<a href=\"#\"class=\"axxa\">kdkd</a>";
$article2="<a href=\"#\" class=\"sadfe\">wgeawtg</a>";
echo preg_replace('/^<[^>]*(class="axxa")[^>]*>(.*)<\/a>/','$2',$article1);
echo '<br/>';
echo preg_replace('/^<[^>]*(class="axxa")[^>]*>(.*)<\/a>/','$2',$article2);





快来给我[URL=http://www.qqgexingqianming.org]说说[/URL]你我离婚后[URL=http://www.qqfenzu.cc]分组[/URL]家庭的情况吧

banporen 2011-03-01
  • 打赏
  • 举报
回复
ls两位太牛逼啦,每人10分吧,能给俺讲讲咋回事不?
h2ero 2011-02-28
  • 打赏
  • 举报
回复

<?php
$article=<<<eof
<a href='/index.php' class="axxa">kdkd</a>
<a class="axxa" href='http://www.h2ero.cn'>kdkkdkd</a>
<a class="axxa" href='http://blog.h2ero.cn'>kdkkdkd</a>
eof;
$pattern='/<a(?:.*?)class="axxa"(?:.*?)>(.*?)<\/a>/is';
preg_match_all($pattern,$article,$result);
print_r($result[1]);
?>
  • 打赏
  • 举报
回复

$article1="<a href=\"#\"class=\"axxa\">kdkd</a>";
$article2="<a href=\"#\" class=\"sadfe\">wgeawtg</a>";
echo preg_replace('/^<[^>]*(class="axxa")[^>]*>(.*)<\/a>/','$2',$article1);
echo '<br/>';
echo preg_replace('/^<[^>]*(class="axxa")[^>]*>(.*)<\/a>/','$2',$article2);


及时结贴
由于项目需求,自己需要将带有链接的标签去除,例如 头晕,转换后的文档为头晕。 由于说明书数量太大(100,569)自己需要采用批处理的方式进行操作。以后用户访问的就是批处理后的文档。故采用正则表达式的形式进行文档处理。 要读取文档内10w多条的数据,可按照3步走战略: 1.外层循环利用文件过滤器读取文件夹内所有符合条件的文件。 2.读取每一个筛选到的文件,利用正则表达式去除超链接符号。 3.将每一个处理过的文件重写回源文件。
它有强大的功能: ◆支持三种窗口模式:单窗口 (SDI),多窗口 (MDI) 和伪多窗口 (PMDI); ◆完全支持 Unicode 系统 (NT/2000/XP/2003/Vista/7) 上的 Unicode 字符串; ◆支持 Unicode 代码页 (UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE); ◆支持系统上已经安装的任何代码页; ◆支持 DOS/Windows、Unix 和 Mac 换行符格式; ◆文件打开前预览; ◆纠正错误代码页显示; ◆文本列选; ◆多级撤消; ◆支持“正则表达式”的查找/替换,可快速搜索/替换文本字串; ◆能记住文件的代码页和插入点的位置; ◆文档的打印预览和打印; ◆支持语言模块; ◆插件支持 (语法高亮显示、文本折叠、自动完成、脚本执行、键盘宏……)。 通过插件已实现的功能: ◎Clipboard.dll: 捕捉剪贴板; ◎Coder.dll: 支持多种编程语言的语法高亮显示、文本折叠、自动完成; ◎ContextMenu.dll: 可以自定义主菜单,编辑区、MDI 标签、超链接和文件的右键菜单; ◎Exit.dll: 提供退出 AkelPad 时的消息提示框和改变按 ESC 键的行为; ◎Explorer.dll: 显示资源管理器面板; ◎Fonts.dll: 字体不用安装到系统就可动态的加载; ◎Format.dll: 行的排序和排列,提取唯一行,提取或删除重复行,固定换行……; ◎FullScreen.dll: 全屏显示的切换插件; ◎HexSel.dll: 文本与十六进制值的相互转换 (包含 ANSI 和 UNICODE); ◎HotKeys.dll: 自定义热键; ◎LineBoard.dll: 显示行号和支持书签操作; ◎Log.dll: 监视日志或捕捉实时输出; ◎Macros.dll: 录制用户的键盘动作并可随后重复它们; ◎MinimizeToTray.dll: 最小化程序到系统托盘; ◎QSearch.dll: 提供一个“快速”文本搜索的小面板; ◎RecentFiles.dll: 管理文件列表; ◎SaveFile.dll: 可以设置自动保存的间隔时间等; ◎Scripts.dll: 脚本插件,基于 Windows 脚本宿主 (WSH) 引擎,因此您可以使用各 种各样的 Windows 组件对象模型 (COM) 的对象,例如,您可以使用 RegExp 对象来执行正则表达式查找替换、筛选文本行,去除行头尾的 空字符,使用 FileSystemObject 对象来操作文件,创建快捷方式, 使用 WshShell 对象来操作 Windows 注册表,或使用 WshNetwork 对 象来运行网络功能,此外,您可以创建和执行利用一个支持自动化的 外部应用程序 (如 Word 和 Excel) 脚本……不仅如此,Scripts.dll 还为 AkelPad 而预置了一些常用的方法调用,可以调用 WinAPI 函 数,从而可以创建有用户交互界面的脚本(如SearchReplace.js等,方 法调用见 Scripts-Chs.txt),和实现更多功能…… ◎Scroll.dll: 拆分窗格或MDI窗口的水平/垂直的同步滚动、自动滚动操作; ◎Sessions.dll: 保存和恢复程序 MDI 会话; ◎SmartSel.dll: 选定文本时排除行尾标记,Home 和 End 键的智能操作; ◎Sounds.dll: 打字时发出声音; ◎SpecialChar.dll: 显示和高亮特殊字符 (空格、制表符、换行符、自动换行、垂直 制表符、换页符、空字符); ◎Speech.dll: 机器朗读选定的文本。未翻译; ◎Stats.dll: 统计显示文档的字符数、单词数、行数等; ◎Templates.dll: 使用预设的模板来创建文档; ◎ToolBar.dll: 工具栏插件,可显示和自定义常用操作的工具栏; ◎XBrackets.dll: 可以在键入左括号时自动键入右括号并把光标置中 (可能与一些中 文输入法不兼容而无法自动完成右括号),高亮显示、跳转配对的括 号,选定括号间的文本。 主程序及所有插件是经过翻译了源代码后使用编译器编译生成的。
asp.net乱码解决方法 1、从IE地址栏中直接输入这个地址,访问没错;   2、做一个静态页,其中包括这个超链接,点击访问也没错;   3、就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码。   一开始,被这个问题也搞得头大,在google了一把后,总算是把问题给搞清楚了,其实只要这个链接地址不经过任何编码传递是不会有问题的。但就是加到了这个功能块后,再点击,虽然这个时候在IE地址栏里显示的还是"http://www.****.com/user.aspx?id=水天",但真正传递过去的参数"水天"其实已经经过类似于Server.UrlEncode的操作了,当然默认是utf-8编码,正是由于这个原因,如果对方系统不进行相应的解码,直接操作该参数,就产生了以上的错误。   解决方法:   网上有很多解决之道,最常见的莫过于以下几点:   1、在web.config里配制,这个方法确实可行,但我想很多人不想用这种方法来解决,把整个项目的请求和回应都定为gb2312,我觉得不是一个好办法,有点本末倒置了,毕竟这会导致很多其它问题的出现。   2、把要包含该链接的aspx文档,修改其charset属性为gb2312。这个方法到也可以接受,不过对于该文中的问题还不是最好的方法,因为该功能块是可以动态添加到任何页面的,难道要去修改所有的页面?想想还是不太合适。 单个页面解决方案 添加   3、直接用Server.UrlEncode和Server.Decode进行加码和解码操作,这种方法对于发送方和接收方都在一个项目中是可行的,现在的问题是,我们要随意去访问别人的系统,所以只能弃用此方法了。   4、采用HttpUtility.UrlEncode(query, System.Text.Encoding.GetEncoding("GB2312"));对链接中的参数值进行gb2312的编码,这种方法,对方不用进行任何解码操作,直接接收参数则不会出现乱码。   一般提到最多的也就上面4种方法,其它的也跟这些大同小异。仔细分析后,觉得还是第4种方法最适合解决当前问题,把中文参数进行如4中的操作。但又出现另外一个问题,由于这是一个用户可以自由输入链接地址的功能,所以首先要做的就是得先分析这些链接URL,解析出参数,再对这些参数进行4中操作,然后再合拼成原来的URL地址。   幸亏,URL参数解析C#已经有类库的支持,不用再去写那些复杂的正则表达式来匹配了。

21,886

社区成员

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

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