【问题标题】:Preg_Replace distorting imagesPreg_Replace 扭曲图像
【发布时间】:2021-02-15 09:53:39
【问题描述】:

我正在尝试做一个 preg_replace 来更改我的页面的标题,因为所有内容都在标题和标题标签下方。我使用了这个示例 https://stackoverflow.com/a/32508962 并出于我的目的对其进行了轻微编辑。

由于原标题替换了标题标签之间的所有内容,因此我将主标题作为默认标题,然后将其添加到 preg_replace 中,这样我就可以根据添加的位置制作字幕了。

换句话说,我的标题标签是这样的:<title>Page Title</tile>

在我的索引里面是这样的:

ob_start();
require_once($_SERVER['DOCUMENT_ROOT'] . "/header.php");
$buffer=ob_get_contents();
ob_end_clean();

然后每页我想要一个字幕我都有这个:

$title = " - Subtitle";
$buffer = preg_replace('/(<title>Site Title)(.*?)(<\/title>)/i', '$1' . $title . '$3', $buffer);

echo $buffer;

它实际上几乎在所有方面都完美无缺,但由于某种原因,它在某些页面上扭曲了图像,老实说我不确定为什么。

图片的代码很简单:

<div class="image gamelogo"><img src="images/gamelogo.png"></div>

那个 div 的 CSS 是这样的:

.image.gamelogo img {
 height:100%;
 width:100%;
 display: block;
}

知道为什么它会扭曲我的图像吗?通过扭曲,我的意思是它的行为几乎就像没有 CSS 一样。它的大小不适合任何浏览器。哦,无论我把它放在哪个页面或放在哪里,图像都会失真。

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    因为你can't parse [x]html with regular expressions

    您可以解析和操作模板。如果您将默认值检查为显式值,例如

    <title>ReplacePageTitle</tile>
    

    ...然后它变得安全,但使用正则表达式效率低:

    $buffer = preg_replace('/<title>ReplacePageTitle<\/title>)/i', '$1' . $title . '$3', $buffer);
    

    但你可以……

    $buffer=str_replace('<title>ReplacePageTitle</tile>', "<title>$title</title>", $buffer);
    

    (顺便说一句,如果您的 HTML 未按预期呈现,有时查看正在生成的 html 是个好主意)。

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 2016-03-18
      • 2016-01-02
      • 2017-02-12
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 2016-01-07
      相关资源
      最近更新 更多