PHP替换精确字符串(使用#个字符)
我想做的是替换A#,A#m,。。。另一种字体颜色版本如下:PHP替换精确字符串(使用#个字符),php,replace,Php,Replace,我想做的是替换A#,A#m,。。。另一种字体颜色版本如下: preg_replace('/\bA#m\b/','<span style="color:#910202;">A#m</span></a>',$content); preg_replace('/\bA#\b/','<span style="color:#910202;">A#</span></a>',$content); preg#u replace('/\bA#
preg_replace('/\bA#m\b/','<span style="color:#910202;">A#m</span></a>',$content);
preg_replace('/\bA#\b/','<span style="color:#910202;">A#</span></a>',$content);
preg#u replace('/\bA#m\b/','A#m',$content);
preg#u replace(“/\bA\b/”、“A”、$content);
不幸的是,如果A#m是输入,则它仅为A#零件设置样式。有什么帮助吗?/\b..\b/方法似乎不起作用。正则表达式工作正常。问题是,第二个也将匹配第一个的结果 如果传入
A#m
,第一个正则表达式将把它改为
<span style="color:#910202;">A#m</span></a>
可能不是你所期望的
一种解决方案是将两个表达式合并为一个:
preg_replace('/\b(A#m?)\b/','<span style="color:#910202;">$1</span></a>',$content);
preg_replace('/\b(A#m?)\b/','$1',$content);
更新:如果要生成识别多种不同和弦的正则表达式,请使用:
preg_replace('/\b(A#(maj7|sus2|sus4)?)\b/',
'$1',
$content);
(A#(maj7 | sus2 | sus4)
的简短解释,以便您可以对其进行扩展:此正则表达式单独匹配A#
,或者可选地(由于?
),然后是其中一个(由于
)maj7
,sus2
,sus4
。我不知道和弦的所有选项是什么,但是阅读我链接到的参考/教程是个好主意。学习基础知识会给你很大的使用能力。正则表达式工作得很好。问题是,第二个也将匹配第一个的结果
如果传入A#m
,第一个正则表达式将把它改为
<span style="color:#910202;">A#m</span></a>
可能不是你所期望的
一种解决方案是将两个表达式合并为一个:
preg_replace('/\b(A#m?)\b/','<span style="color:#910202;">$1</span></a>',$content);
preg_replace('/\b(A#m?)\b/','$1',$content);
更新:如果要生成识别多种不同和弦的正则表达式,请使用:
preg_replace('/\b(A#(maj7|sus2|sus4)?)\b/',
'$1',
$content);
(A#(maj7 | sus2 | sus4)
的简短解释,以便您可以对其进行扩展:此正则表达式单独匹配A#
,或者可选地(由于?
),然后是其中一个(由于
)maj7
,sus2
,sus4
。我不知道和弦的所有选项是什么,但是阅读我链接到的参考/教程是个好主意。只学习基础知识会给你很大的使用能力。这个简单的正则表达式就可以了
preg_replace('/A#(m?)/','<span style="color:#910202;">A#\\1</span></a>',$content);
preg#u replace(“/A#(m?/”,“A#\\1”,$content);
这里的主要思想是,如果后面跟着m
,我们将在replace字符串中添加m
这个简单的正则表达式就可以了
preg_replace('/A#(m?)/','<span style="color:#910202;">A#\\1</span></a>',$content);
preg#u replace(“/A#(m?/”,“A#\\1”,$content);
这里的主要思想是,如果后面跟着m
,我们将在replace字符串中添加m
尝试将第一次调用preg_replace的结果作为参数传递给第二次调用(您将相同的参数$content传递给了两个方法调用)-1,因为您在这一次调用之后重复询问了一个问题,并将其删除。这被认为是对社区的虐待。就像我之前说过的,问题实际上比这更严重。这就是为什么我提出了一个新问题。我如何为每个和弦实现这一点:A#maj7/A#sus2/A#sus4?尝试将第一次调用的结果作为参数传递给第二次调用(将相同的参数$content传递给两个方法调用)-1,因为您在这一次调用之后重复了一个问题并删除了它。这被认为是对社区的虐待。就像我之前说过的,问题实际上比这更严重。这就是为什么我提出了一个新问题。我如何才能在每个和弦上实现这一点:A#maj7/A#sus2/A#sus4?我自己解释得再好不过了。这个和弦是错的(错配)。谢谢你的快速回答,我会马上尝试!嗨,乔恩,我尝试过你的解决方案,但不能使它适用于每一个弦(和弦)。我在这里发布了一个更详细的问题:。非常感谢。我如何才能在每个和弦上实现这一点:A#maj7/A#sus2/A#sus4我自己也不可能解释得更好。这个和弦是错的(错配)。谢谢你的快速回答,我会马上尝试!嗨,乔恩,我尝试过你的解决方案,但不能使它适用于每一个弦(和弦)。我在这里发布了一个更详细的问题:。非常感谢。我如何为每个和弦实现这一点:A#maj7/A#sus2/A#sus4