当前位置: 首页 > 知识库问答 >
问题:

根据需要加载字体的PHP脚本

堵才哲
2023-03-14

我正在寻找一种方法,根据需要添加字体。

我最初有4谷歌API字体选择从当我建立这个特定的网站。现在它已经长大了,我想把字体选择增加到9种。

我试图找到一种通过PHP实现的方法,但我是一名设计师,所以我的PHP是“呃”。

这是我所知道的php的“草稿”。

有人想尽快帮我吗?

<?php //This is in an External PHP Command Page
$aladin = "Aladin";
$cardo = "Cardo:400,400italic";
$crimson = "Crimson+Text:700italic";
$euphoria = "Euphoria+Script";
$josefin = "Josefin+Slab:400,700";
$philosopher = "Philosopher:400,400italic";
$redressed = "Redressed";
$rouge = "Rouge+Script";
$vollkorn = "Vollkorn:400,400italic,700";

//Factory Presets
$all = "$aladin, $cardo, $crimson, $euphoria, $josefin, $philosopher, $redressed, $rouge, $vollkorn";
$main = "$cardo, $crimson, $philosopher,";

    function insertFonts ($fonts) {
        echo '<link href=\"//fonts.googleapis.com/css?family=';
        echo $fonts;
        echo '\' rel="stylesheet" type="text/css" />';  
        };
?>

然后在网页上显示这个。

<?php //This goes inside the <head> of X page
insertFonts($main); // OR insertFonts($aladin, $redressed, $euphoria); as needed
?>

此外,链接标签在字体名称之间需要一个|中间。。。我不知道怎么做。谷歌提供的所有这些文件的格式是

谢谢

共有3个答案

南宫浩皛
2023-03-14

试试这个

// These are the keys of the array in the `insertFonts` function
// Here only as an example
$which = 'cardo,crimson,philosopher';

function insertFonts ($which = 'all') 
{
    $fonts = array(
        'alladin'     => "Aladin",
        'cardo'       => "Cardo:400,400italic",
        'crimson'     => "Crimson+Text",
        'euphoria'    => "Euphoria+Script",
        'josefin'     => "Josefin+Slab, serif",
        'philosopher' => "Philosopher, italic",
        'redressed'   => "Redressed, cursive",
        'rouge'       => "Rouge+Script, cursive",
        'vollkorn'    => "Vollkorn, serif",
    );

    // $which can be either all (or ommitted) or contain
    // the keys of the fonts defined in the $fonts array above
    $final_fonts = array();
    if ($which == 'all')
    {
        $final_fonts = $fonts;
    }
    else
    {
        $keys = explode(',', $which);
        if (is_array($keys)) 
        {
            foreach ($keys as $item) 
            {
                if (array_key_exists($item, $fonts)
                {
                    $final_fonts[$item] = $fonts[$item];
                }
            }
        }
    }

    if (count($final_fonts) > 0)
    {
        $font_line = implode("|", $final_fonts);
        $output    = '<link href="//fonts.googleapis.com/css?family='
                   . $font_line 
                   . ' rel="stylesheet" type="text/css" />'; 
        echo $output;
    }
};

以上内容允许您为页面设置不同的字体集,并且不仅限于main/all。您所要做的就是在函数中传递希望包含的字体的不同键,并用逗号分隔。

周辰沛
2023-03-14
<?php
header('Content-Type: text/plain'); // this is just for the example

$fonts = array();
$fonts['aladin'] = "Aladin";
$fonts['cardo'] = "Cardo:400,400italic";
$fonts['crimson'] = "Crimson+Text:700italic";
$fonts['euphoria'] = "Euphoria+Script";
$fonts['josefin'] = "Josefin+Slab:400,700";
$fonts['philosopher'] = "Philosopher:400,400italic";
$fonts['redressed'] = "Redressed";
$fonts['rouge'] = "Rouge+Script";
$fonts['vollkorn'] = "Vollkorn:400,400italic,700";

//Factory Presets
$all = implode('|', $fonts);
$main = implode('|', array($fonts['cardo'], $fonts['crimson'], $fonts['philosopher']));

function insertFonts ($fonts) {
    echo '<link href="//fonts.googleapis.com/css?family='.$fonts.'" rel="stylesheet" type="text/css" />'.PHP_EOL;
};


insertFonts($all); // <link href="//fonts.googleapis.com/css?family=Aladin|Cardo:400,400italic|Crimson+Text:700italic|Euphoria+Script|Josefin+Slab:400,700|Philosopher:400,400italic|Redressed|Rouge+Script|Vollkorn:400,400italic,700" rel="stylesheet" type="text/css" />
insertFonts($main); // <link href="//fonts.googleapis.com/css?family=Cardo:400,400italic|Crimson+Text:700italic|Philosopher:400,400italic" rel="stylesheet" type="text/css" />

?>
丌官寒
2023-03-14
function insertFonts($f){
    $output = '';
    $fonts = array(
        'aladin'        =>  "Aladin",
        'cardo'         =>  "Cardo:400,400italic",
        'crimson'       =>  "Crimson+Text",
        'euphoria'      =>  "Euphoria+Script",
        'josefin'       =>  "Josefin+Slab, serif",
        'philosopher'   =>  "Philosopher, italic",
        'redressed'     =>  "Redressed, cursive",
        'rouge'         =>  "Rouge+Script, cursive",
        'vollkorn'      =>  "Vollkorn, serif"
    );

foreach ($f as $val) {
    if(array_key_exists($val, $fonts)){
        if(strlen($output)>0) $output .="|";
        $output .="$fonts[$val]";
    }
}
return strlen($output)>0 ? "<link href=\"//fonts.googleapis.com/css?family=$output\" rel='stylesheet' type='text/css' />" : '';
}

// Usage
echo insertFonts(array('cardo','josefin'));

但如果要单独加载每个字体,请按以下方式更改方法:

foreach ($f as $val) {
    if(array_key_exists($val, $fonts)){
        $output .="<link href=\"//fonts.googleapis.com/css?family=$fonts[$val]\" rel='stylesheet' type='text/css' />\n";
    }
}

return $output;
 类似资料:
  • 我需要帮助。我正在创建一个项目,但在使用模板时遇到问题。我为标题和菜单创建了一个组件。菜单是一个侧边栏,在打开页面时隐藏。只有在登录后,菜单才会出现。但是javascript在那之后就不起作用了。 每当我进入登录屏幕时,我都会隐藏导航栏和侧边栏,当它出现并再次显示时,脚本将不再工作。当我去查看检查器时,脚本从元素中消失。

  • 问题内容: 我有一个PHP加密功能。我需要一个Java计数器部分。由于我对PHP的了解有限,因此无法理解。有人会两种语言,请帮忙。 PHP代码: 在此先感谢Aniruddha 问题答案: 这应该做。 Java中的MCRYPT_RIJNDAEL_128和MCRYPT_MODE_CBC等效于AES / CBC / NoPadding。您还需要一个用于Base64编码的实用程序,以上代码在Apache

  • 现在我正在浏览我的应用程序,更改此模式的实例: 进入: 其中是我项目根目录下的一个简单文件,有选择地从NPM包中导入我需要的ES6模块: 通过对许多包执行此操作,我能够将捆绑包文件大小减少50%以上。 有没有一个WebPack模块或插件可以自动为任何包做这件事? 如果这个转换(即,只在包中包含显式导入的内容,而不是整个库)递归地应用于整个包树,我打赌我们会看到显著的大小差异。 编辑:正如Swive

  • 问题内容: 我在我的网站上使用了一些服装字体,但是我遇到了一个问题,因为它没有被加载,因此我无法找出问题所在,这是代码: 该作品的。我也试图让每个人都不同,但没有奏效。 问题答案: 每个字体必须有一个@ font-face声明: 不需要单引号。 如果要为IE9使用自定义字体,则还需要提供“.eot”字体文件。 编辑:好的,不同的浏览器有不同的字体实现方式: 您可能还需要将以下类型添加到.htacc

  • 问题内容: 我有一个文件,它是需要SUDO才能工作的bash脚本。 我可以使用SUDO从命令行运行它,但系统会提示我输入SUDO密码。 我想通过php通过php运行此脚本,但是如果我调用SUDO,它就不像命令行那样可以提示我输入密码。有没有办法通过sudo调用传递sudo的密码? 我怎样才能做到这一点? 问题答案: 编辑sudoers文件(带有),并添加一条规则,该规则允许Web服务器用户无需密码

  • 问题内容: 有人有吗? 问题答案: 它是双冒号运算符(请参阅解析器标记列表)。