我需要一个系统,它将在其中搜索特定模式中的字符串,然后向其中添加特定的HTML标记,但删除搜索字符串。
例如,如果匹配字符串是%%
,并且有人键入了这个%%MyString
,则应该将其转换为这个<p class="myClass">MyString </p>
,而不在其前面加%%
这是我试过的代码。我认为这与${99}
有关。我尝试了$0
,但它仍然给了我匹配字符串。
function convertLabels($str){
$regex = "/<(.*?)>[%]+([a-zA-Z0-9_]+)<(.*?)>/";
$str = preg_replace($regex, '<a href="listhash.php?tag=$1" class="label label-default">${99}</a>', $str);
$regex = "/<(.*?)>[%%]+([a-zA-Z0-9_]+)<(.*?)>/";
$str = preg_replace($regex, '<a href="listhash.php?tag=$1" class="label label-primary">${99}</a>', $str);
$regex = "/<(.*?)>[%!]+([a-zA-Z0-9_]+)<(.*?)>/";
$str = preg_replace($regex, '<a href="listhash.php?tag=$1" class="label label-info">${99}</a>', $str);
$regex = "/<(.*?)>[%%!]+([a-zA-Z0-9_]+)<(.*?)>/";
$str = preg_replace($regex, '<a href="listhash.php?tag=$1" class="label label-warning">${99}</a>', $str);
$regex = "/<(.*?)>[%!!]+([a-zA-Z0-9_]+)<(.*?)>/";
$str = preg_replace($regex, '<a href="listhash.php?tag=$1" class="label label-danger">${99}</a>', $str);
return($str);
}
这就是您想要的吗?
function convertLabels($str){
$regex = "/%%([^'s]+)/";
$str = preg_replace($regex, '<p class="myClass">${1}</p>', $str);
return $str;
}
echo convertLabels("wrap the %%text with a p tag");
输出:
wrap the <p class="myClass">text</p> with a p tag
说明:
[^'s]+
。。。一个或多个任意字符(不包括空格字符)
${1}
是对模式中第一个带括号的表达式([^'s]+)
的反向引用,这意味着%%
和下一个出现的空格字符之间的所有文本。