2017-04-12 5 views
0

htmlでレンダリングすると、引用符を出力するPHP関数があります。レンダリングの引用符はPHPの文字列で

onload="this.rel='stylesheet'" 

私が欲しいのは以下の通りです:ここでは

onload="this.rel='stylesheet'" 

が発生する最初の例を起こし機能である - 誰もが、私はこの問題を解決する方法を知っているのですか?ここで

public function get_css($opts, $index, $count) 
    { 
     $out = array(); 

       $version = filemtime($_SERVER['DOCUMENT_ROOT'].'/assets/css/app.min.css'); 
       $str = "this.rel='stylesheet'"; 
       $out[] = $this->_single_tag('link', array(
        'rel'=>'preload', 
        'as'=>'style', 
        'type'=>'text/css', 
        'href'=>'/assets/css/app.min.'.$version.'.css', 
        'onload'=>$str, 
       )); 

     return implode("\n\t", $out)."\n"; 

    } 

_single_tag

protected function _single_tag($tag=false, array $attrs) 
{ 
    if ($tag===false) return; 

    return PerchXMLTag::create($tag, 'single', $attrs); 
} 
+0

おそらくあなた:ので、私の提案は、単に生のHTMLを出力し、何かをget_css関数内のコードを置き換えることであろう、これを無効にする方法があるようには思えないthe Perch documentationを見てみると

'$ this - > _ single_tag()'を呼び出すと、引用符をHTMLタグに変換するHTMLエンコーディングが行われます。その関数のソースコードを見ることはできますか? –

+0

私は関数 –

答えて

1

この問題は、PerchXMLTag::create()メソッドから提供されています。このメソッドは、指定された値をHTMLでエンコードします。

public function get_css($opts, $index, $count) 
{ 
    $out = array(); 

    $version = filemtime($_SERVER['DOCUMENT_ROOT'].'/assets/css/app.min.css'); 
    $str = "this.rel='stylesheet'"; 
    $out[] = "<link rel='preload' as='style' type='text/css' href='/assets/css/app.min.{$version}.css' onload='{$str}' />"; 

    return implode("\n\t", $out)."\n"; 

} 
0
public function get_css($opts, $index, $count) 
{ 
    $out = array(); 

      $version = filemtime($_SERVER['DOCUMENT_ROOT'].'/assets/css/app.min.css'); 
      $str = "this.rel=\"stylesheet\""; 
      $out[] = $this->_single_tag('link', array(
       'rel'=>'preload', 
       'as'=>'style', 
       'type'=>'text/css', 
       'href'=>'/assets/css/app.min.'.$version.'.css', 
       'onload'=>$str, 
      )); 

    return implode("\n\t", $out)."\n"; 

} 

する機能はそれで試してみてくださいされています。

+0

で質問を更新しました。あなたの例は次の出力を返します:onload = "this.rel = " stylesheet "" –

+0

このコードは同じことを返しませんか?彼のコードのどこかで引用符がHTMLでエンコードされているので、一重引用符を二重引用符に変更するだけで実際にはこの問題は解決されません。 –

+0

次にエンコードに問題があります。 ApacheとPHPインスタンスがutf-8エンコーディングで構成されていることを確認してください。 Apacheの場合、httpd.confファイルの 'AddDefaultCharset UTF-8'とPHPのphp.iniファイルをチェックインできます:' default_charset = "utf-8" ' –

関連する問題