当多重匹配时,php preg_替换每个匹配项
我有一个字符串,其中包含多个*来表示节目分级。 由于人们可能会使用个人*来表示评级以外的内容,如果两个或两个以上的人在一起(例如*),我将假设只有这些人代表评级 我想将*的每次出现都更改为★ (★;)以改进演示 我目前正在使用preg_replace,如下所示,以便在发现两个或多个*时进行匹配当多重匹配时,php preg_替换每个匹配项,php,regex,Php,Regex,我有一个字符串,其中包含多个*来表示节目分级。 由于人们可能会使用个人*来表示评级以外的内容,如果两个或两个以上的人在一起(例如*),我将假设只有这些人代表评级 我想将*的每次出现都更改为★ (★;)以改进演示 我目前正在使用preg_replace,如下所示,以便在发现两个或多个*时进行匹配 $blurb = preg_replace("/[\*]{2,}/", "★", $s['longDescription']); 然而,这只是一个地方★ 不管发生多少次。如
$blurb = preg_replace("/[\*]{2,}/", "★", $s['longDescription']);
然而,这只是一个地方★ 不管发生多少次。如何修改此项以替换每个事件
e、 g.
**
成为★★, <代码>***变为★★★ 等等。您可以为此使用自定义回调,并且:
输入字符串为***
,将输出:
★★★★★
对于PHP<5.3,您将无法使用匿名函数,因此必须将上述回调声明为独立函数。但是,如果你想变得超级酷,你可以修改你的正则表达式来使用断言,并找到所有在一个星号之前或之后的星号,如下所示:
$s['longDescription'] = 'replace these ***** not this* and *** this ** ****';
$blurb = preg_replace("/(?:(?<=\*)|(?=\*\*))\*/", "★", $s['longDescription']);
您可以为此使用自定义回调,并且: 输入字符串为
***
,将输出:
★★★★★
对于PHP<5.3,您将无法使用匿名函数,因此必须将上述回调声明为独立函数。但是,如果你想变得超级酷,你可以修改你的正则表达式来使用断言,并找到所有在一个星号之前或之后的星号,如下所示:
$s['longDescription'] = 'replace these ***** not this* and *** this ** ****';
$blurb = preg_replace("/(?:(?<=\*)|(?=\*\*))\*/", "★", $s['longDescription']);
您不需要在字符类内部转义星号,因为它被视为文字,但必须在外部转义:
$blurp = preg_replace('~(?<=\*)\*|\*(?=\*)~', '★', $yourString);
$blurp=preg_replace(“~”(?您不需要在字符类内部转义星号,因为它被视为文字,但必须在外部转义:
$blurp = preg_replace('~(?<=\*)\*|\*(?=\*)~', '★', $yourString);
$blurp=preg_replace('~(?)?