如何更改主题选项值中的特定字符-用加号替换空格

时间:2011-05-12 作者:snthr

我正在写一个主题,我想让用户能够通过一个主题选项,为他们的网站指定一种字体Google Web Fonts.

如果用户想要嵌入一种字体,例如,News Cycle, 然后代码需要在<link> 中的标记<head>, 在网站的CSS中。

<link> 标记,字体用+ (加号)在名称中:

<link href=\'http://fonts.googleapis.com/css?family=News+Cycle\' rel=\'stylesheet\' type=\'text/css\'>
但是,在CSS中,没有加号:

h1 { font-family: \'News Cycle\', arial, serif; }
理想情况下,我希望用户只需将字体名称写入或粘贴到表单字段中,然后在代码中,在需要的地方用加号替换空格。

通过谷歌搜索,我认为这可以用str_replace 或者其他类似的PHP,但我是PHP新手。有人能解释一下最好的方法吗?

目前,我的标题中有相关的PHP。php看起来有点像这样:

<?php 

$options = get_option(\'mytheme_theme_options\');

if( isset( $options[\'webfont\'] ) && ( !empty( $options[\'webfont\'] ) ) )   
printf( "WEBFONT LINK", $options[\'webfont\'] );

?>
谢谢。

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

不是更好的解决方案是建立自己的可用字体列表,然后让用户选择要使用的字体吗?这样一来,验证就容易多了,而且您可以更好地控制如何使用/实现特定设置。

在任何情况下,您都应该能够在清理回调中执行您想要的操作,您将(大概)确保输入字符串经过清理和验证(即字符串实际对应于Google web字体名称)。

一旦您有了“有效名称”作为设置值,就很容易do a str_replace() to replace " " with "+".

我将使用两种设置:$themename_options[\'google-webfont-css\'] 保存字体系列名称(用于CSS),以及$themename_options[\'google-webfont-link\'] 以保持链接参数。

因此:

$valid_input[\'google-webfont-css\'] = // validated and sanitized $input[\'google-webfont-css\'];
$valid_input[\'google-webfont-link\'] = str_replace( \' \', \'+\', $valid_input[\'google-webfont-css\'];

return $valid_input;
(这在验证回调函数中。)

SO网友:Sound4Sites

我在寻找完全不同的东西时偶然遇到了这个问题。我也知道这个问题已经有两年了。但自从我在Wordpress中编写/使用Google字体以来,我逐渐意识到:

无需更换链接中的+。在我测试过的所有浏览器上,该链接也与空格一起工作。在我的php页面中,我加载了我刚刚使用的其他css和样式:

<link href=\'http://fonts.googleapis.com/css?family=<?php echo $theme_options[\'user_font\'];?>\' rel=\'stylesheet\' type=\'text/css\'>

<style>
h1 {font-family: <?php echo $theme_options[\'user_font\'];?>;}
</style>

结束