PHP字符串替换求助:多连字符按规则替换实现问题
正确的连字符替换实现方案
你的问题出在替换顺序上:原代码先把所有单个-替换成空格,导致--和---都被拆成单个-提前替换了,后面的规则根本没机会生效。
正确的逻辑是从最长的匹配项开始替换,也就是先处理三个连字符---,再处理两个连字符--,单个-保持不动即可。
实现代码
$v1 = $_GET['v1']; // 按长度从长到短依次替换 $name = str_replace('--', ' ', str_replace('---', ' - ', $v1));
验证示例
假设$v1的值是test---abc--def-ghi,替换后结果为:test - abc def-ghi,完全符合规则:
---替换为---替换为单个空格- 单个
-保持不变
内容的提问来源于stack exchange,提问作者United Pro Source
相关产品推荐
相关产品推荐

