php – 正则表达式内的正则表达式模式
发布时间:2020-12-13 21:40:34 所属栏目:PHP教程 来源:网络整理
导读:我想从我的代码中删除任何额外的空格,我正在解析一个docblock.问题是我不想删除 code代码中的空格 / code. 例如,我用它来删除额外的空格: $string = preg_replace('/[ ]{2,}/','',$string); 但我想在 code / code中保留空格. 这段代码/字符串: This is som
我想从我的代码中删除任何额外的空格,我正在解析一个docblock.问题是我不想删除< code>代码中的空格< / code>.
例如,我用它来删除额外的空格: $string = preg_replace('/[ ]{2,}/','',$string); 但我想在< code>< / code>中保留空格. 这段代码/字符串: This is some text This is also some text <code> User::setup(array( 'key1' => 'value1','key2' => 'value1' )); </code> 应该转化为: This is some text This is also some text <code> User::setup(array( 'key1' => 'value1','key2' => 'value1' )); </code> 我怎样才能做到这一点? 解决方法
你并不是真的在寻找条件 – 你需要一种方法来跳过部分字符串,这样它们就不会被替换.使用preg_replace,通过插入虚拟组并用自身替换每个组,可以相当容易地完成此操作.在您的情况下,您只需要一个:
$str = preg_replace("~(<code>.*?</code>)|^ +| +$|( ) +~smi","$1$2",$str); 它是如何工作的? >(< code>.*?< / code>) – 匹配< code>阻止进入第一组,$1.这假定简单格式化并且没有嵌套,但如果需要可能会很复杂. 替换字符串$1 $2将保持< code>块和第一个空格(如果被捕获),并删除它匹配的任何其他内容. 要记住的事情: >如果$1或$2未捕获,则将替换为空字符串. 工作示例:http://ideone.com/HxbaV (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |