【问题标题】:regular expression that convert html anchor in to wiki anchor syntax将 html 锚点转换为 wiki 锚点语法的正则表达式
【发布时间】:2012-03-21 05:11:43
【问题描述】:

我的页面包含很多锚点,我必须将该 html 放入 wiki 页面。如何在 php 中将锚点转换为 wiki url?

示例: <a href="http://www.php.net/manual/en/memcached.add.php">add </a> 将是 [http://www.php.net/manual/en/memcached.add.php add]

【问题讨论】:

  • 那么<a href="javascript:alert('foo')">bar<script>alert('XSS')</script>baz</a>呢?
  • @Qtax 然后它会 strip.bcaz wiki 不会接受这个

标签: php html regex wiki mediawiki


【解决方案1】:

我相信这应该可行:

<?php

echo $output = preg_replace("/<a\s+href\s*=\s*['\"]?(.+)['\"]?\s*>(.+)<\/a>/",  
    "[$1 $2]",
    "<a href=http://www.php.net/manual/en/memcached.add.php>add </a>");

?>

【讨论】:

  • 警告:preg_replace(): Unknown modifier '(' on
  • 对不起,我忘了添加开始和结束分隔符,现在试试。这次我用在线检查器对其进行了测试:)
  • codepad.org/IgFEkU2w 我不想要href。并且锚href中的所有内容都将在''而不是双引号中
  • 抱歉忘记了。这现在应该可以工作了,但我在移动设备上,不能在以后仔细检查
  • 我的新编辑在键盘中传递了您的示例。如果出现引号,它将适当地捕获它们,否则不会:)
【解决方案2】:

怎么样:

echo preg_replace('#<a.+href="(.+?)".*?>\s*(.+?)\s*</a>#', "[$1 $2]",
    '<a href="http://www.php.net/manual/en/memcached.add.php">add </a>');

输出:

[http://www.php.net/manual/en/memcached.add.php add]    

【讨论】:

  • 那个? * 后不需要。 * 表示可选
  • @JustinPihony:是的。使* 不贪婪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
相关资源
最近更新 更多