【问题标题】:preg_replace and condition inside it?preg_replace 和condition 里面呢?
【发布时间】:2011-06-28 16:26:26
【问题描述】:

我使用此代码从文本中删除所有链接:

$string = preg_replace("/\])>([^)\/i", "$2", $string);

但我想以某种方式不删除指向某个域的链接,例如 google.com 所以,我想删除所有其他 URL,但要保留一个域的链接。

如何在 preg_replace 中添加一些条件?

【问题讨论】:

    标签: php preg-replace


    【解决方案1】:

    条件需要使用preg_replace_callback()

    但您可能会更好地解析 HTML 和操作 DOM。原因是,你的正则表达式总会有一些缺陷。例如,当前的不会阻止某人添加这样的链接:

    <a href=evil><b>foo</b></a >
    

    【讨论】:

    • 抱歉,您能告诉我如何使用该功能吗,我的意思是如何为一个域保留链接?
    • 请参阅文档中的示例 #2 和 #3,了解如何使用该功能。使用var_dump() 查看输入参数:它是一个包含捕获的数组,很像preg_match() 中的$match 参数。
    • 我知道了如何制作函数和内部函数我检查是否(是我想跳过的域),但是如何告诉它在这种情况下需要跳过 preg_replace 并保留原始 html ?函数 parseSdomains($matches){ $skipURL = 'google.com'; if(!strpos($matches[1],$skipURL)){ return $matches[2]; } else{ 在这里说什么? } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2011-12-06
    • 1970-01-01
    • 2017-05-25
    • 2016-01-18
    相关资源
    最近更新 更多