Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP替换精确字符串(使用#个字符)_Php_Replace - Fatal编程技术网

PHP替换精确字符串(使用#个字符)

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#

我想做的是替换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#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