逃避CSS中的特殊字符

时间:2017-12-05 17:51:01

标签: php html css

我使用PHP动态获取图像URL。我想将该图像设置为div背景。

一切都很好,但是当我插入css时,图片网址(它是一个blob)会将&更改为&,结果为404

请查看注释代码以获取输出。

任何人都可以帮我保持网址的原样吗?

<?php
$content = @$this->content[ 'q_view' ][ 'content' ];
preg_match_all( '/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $matches );    
if ( ! empty( $matches[ 0 ] ) ) {
    $this->_q_header_image = $matches[ 1 ][ 0 ];
} else {
    $this->_q_header_image = $this->rooturl . '/images/q-header-default.jpg';
}    
var_dump($this->_q_header_image) // http://localhost/lion/?qa=blob&qa_blobid=17313457200794318190    
echo '<style>.qa-q-feature-image { background-image: url("' . $this->_q_header_image . '")}</style>';

// http://localhost/lion/?qa=blob&amp;qa_blobid=17313457200794318190

1 个答案:

答案 0 :(得分:1)

您需要在将其分配给$this->_q_header_image之前对其进行解码。使用以下代码: -

<?php
$content = @$this->content[ 'q_view' ][ 'content' ];
preg_match_all( '/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $matches );    
if ( ! empty( $matches[ 0 ] ) ) {
    $this->_q_header_image = html_entity_decode($matches[ 1 ][ 0 ]);
} else {
    $this->_q_header_image = $this->rooturl . '/images/q-header-default.jpg';
}    
var_dump($this->_q_header_image) // http://localhost/lion/?qa=blob&qa_blobid=17313457200794318190    
echo '<style>.qa-q-feature-image { background-image: url("' . $this->_q_header_image . '")}</style>';

我希望这会有所帮助