检查 str_replace 是否应该首先执行以避免重复的字符串

Check if str_replace Should Execute First to Avoid Duplicate Strings

每次我们保存 ACF 表单时,此代码段都会在注册商标符号周围添加额外的 标签。我们的目标是让它只执行一次,所以我们需要先检查标签但不知道如何,因为我们对 PHP.

还很陌生
function superscript_R( $value, $post_id, $field ) {
if( is_string($value) ) {
    $value = str_replace(['®', '&reg;'],'<sup>®</sup>',  $value );
}
return $value;
}

// Apply to all fields
add_filter('acf/update_value', 'superscript_R', 10, 3);

您可以检查 $value 是否包含该符号。因此,只有当它没有 <sup>®</sup>

时,它才会替换值
if( is_string($value) && strpos($value, '<sup>®</sup>') === false ) {
    $value = str_replace(['®', '&reg;'],'<sup>®</sup>',  $value );
}

您应该首先检查字符串是否包含,如果包含则不要替换。

function superscript_R( $value, $post_id, $field ) {
   if( is_string($value) && strpos($value, '<sup>') === false ) {
       $value = str_replace(['®', '&reg;'],'<sup>®</sup>',  $value );
   }
   return $value;
}