Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 preg_替换每个匹配项_Php_Regex - Fatal编程技术网

当多重匹配时,php preg_替换每个匹配项

当多重匹配时,php preg_替换每个匹配项,php,regex,Php,Regex,我有一个字符串,其中包含多个*来表示节目分级。 由于人们可能会使用个人*来表示评级以外的内容,如果两个或两个以上的人在一起(例如*),我将假设只有这些人代表评级 我想将*的每次出现都更改为★ (★;)以改进演示 我目前正在使用preg_replace,如下所示,以便在发现两个或多个*时进行匹配 $blurb = preg_replace("/[\*]{2,}/", "★", $s['longDescription']); 然而,这只是一个地方★ 不管发生多少次。如

我有一个字符串,其中包含多个*来表示节目分级。 由于人们可能会使用个人*来表示评级以外的内容,如果两个或两个以上的人在一起(例如*),我将假设只有这些人代表评级

我想将*的每次出现都更改为★ (★;)以改进演示

我目前正在使用preg_replace,如下所示,以便在发现两个或多个*时进行匹配

$blurb = preg_replace("/[\*]{2,}/", "★", $s['longDescription']);
然而,这只是一个地方★ 不管发生多少次。如何修改此项以替换每个事件


e、 g.
**
成为★★, <代码>***变为★★★ 等等。

您可以为此使用自定义回调,并且:

输入字符串为
***
,将输出:

&#9733;&#9733;&#9733;&#9733;&#9733;
对于PHP<5.3,您将无法使用匿名函数,因此必须将上述回调声明为独立函数。但是,如果你想变得超级酷,你可以修改你的正则表达式来使用断言,并找到所有在一个星号之前或之后的星号,如下所示:

$s['longDescription'] = 'replace these ***** not this* and *** this ** ****';
$blurb = preg_replace("/(?:(?<=\*)|(?=\*\*))\*/", "&#9733;", $s['longDescription']);

您可以为此使用自定义回调,并且:

输入字符串为
***
,将输出:

&#9733;&#9733;&#9733;&#9733;&#9733;
对于PHP<5.3,您将无法使用匿名函数,因此必须将上述回调声明为独立函数。但是,如果你想变得超级酷,你可以修改你的正则表达式来使用断言,并找到所有在一个星号之前或之后的星号,如下所示:

$s['longDescription'] = 'replace these ***** not this* and *** this ** ****';
$blurb = preg_replace("/(?:(?<=\*)|(?=\*\*))\*/", "&#9733;", $s['longDescription']);

您不需要在字符类内部转义星号,因为它被视为文字,但必须在外部转义:

$blurp = preg_replace('~(?<=\*)\*|\*(?=\*)~', '&#9733;', $yourString);

$blurp=preg_replace(“~”(?您不需要在字符类内部转义星号,因为它被视为文字,但必须在外部转义:

$blurp = preg_replace('~(?<=\*)\*|\*(?=\*)~', '&#9733;', $yourString);
$blurp=preg_replace('~(?)?