Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于计算html+;的显示高度的函数;css_Php_Html_Css - Fatal编程技术网

Php 用于计算html+;的显示高度的函数;css

Php 用于计算html+;的显示高度的函数;css,php,html,css,Php,Html,Css,(以下是问题:) 从PHP脚本中,我打印了一些HTML代码,我想知道结果的高度(用于分页计算)。假设我有以下输入: $html我要打印的代码(字符串) $css代码,包含HTML(字符串)中显示的所有项目的字体和大小的完整详细信息 所有相关的浏览器设置(字体、大小等) 页面$width,以像素(int)为单位 我创建的页面如下所示: <html> <head> <style>$css</style> </head>

(以下是问题:)

从PHP脚本中,我打印了一些HTML代码,我想知道结果的高度(用于分页计算)。假设我有以下输入:

  • $html我要打印的代码(字符串)
  • $css代码,包含HTML(字符串)中显示的所有项目的字体和大小的完整详细信息
  • 所有相关的浏览器设置(字体、大小等)
  • 页面$width,以像素(int)为单位
我创建的页面如下所示:

<html>
  <head>
    <style>$css</style>
  </head>
  <body style='width:$width'>
    $html
  </body>
</html>

$css
$html
我想知道,从PHP脚本中,从页面顶部到文本底部的像素数


编辑:在显示内容之前,我需要在服务器端执行此操作,因为我使用此操作来计算要放置的内容。例如,如果内容太高,我可能决定只放前半部分,等等


另一个可能的用途是计算达到特定高度所需的宽度。例如,我可能尝试将其放入宽度为200px的div中,但结果可能太高;然后我尝试宽度400px,等等,直到我找到宽度,它给出了我想要的高度。

HTML呈现在客户端完成,而PHP驻留在服务器上。

因此,PHP无法从服务器端确定HTML元素的高度

但是,您可以使用JavaScript获得这些信息。

请参阅:

如果要创建自己的服务器端浏览器,则加载时间会出现问题。如果这不是一个大问题,您可以解析css(如下所示:)来找出
$html
变量中使用了什么填充、边距、字体、线条高度等等,然后,如果您知道字体的细节,您可以试着计算内容高度(当然是给定的,用户输入的浏览器)

您可以使用来完成此操作。根据这个类,对CSS的支持是有限的,但是如果你的样式得到了支持,那么想法就是在writeHTML方法调用之前和之后检查当前位置(GetX()和GetY())

使用jQuery不是更简单吗?我需要在服务器端这样做,因为我使用它来计算要放置的内容。例如,如果内容太高,我可能决定只放前半部分,等等@erresegalhalevi服务器端不需要它。只需在JavaScript中获取height并将AJAX请求发送到包含height.OK信息的PHP脚本,但到那时,用户已经看到了内容。。。我可能需要多次迭代-将内容放入宽度为800px的div中并测量高度,然后尝试宽度为600px并测量高度,等等,直到找到最佳宽度。如果我使用客户端度量,用户将在每次迭代中看到内容闪烁。我需要它是服务器端的,这样用户才能看到最终结果。“PHP无法从服务器端确定HTML元素的高度”-当然,PHP无法直接访问HTML渲染,但必须有一种间接进行计算的方法。毕竟,这是确定性的——所有的数据都在那里。那里有什么数据?服务器端只有文本形式的HTML标记可用。Javascript解决方案是不够的,因为它只计算显示后的高度,我需要在显示前知道高度,请参阅我的编辑。这是不可能的。你必须在客户端完成,也许可以通过AJAX反馈。“只有文本形式的HTML标记”-我也有完整的CSS。因此,就像浏览器(是一个计算机程序)可以接受HTML和CSS并决定如何显示一样,PHP程序也是如此。如果您知道浏览器设置和CSS样式,了解一封信的宽度和高度并不是一个大问题加载时间也不是一个问题。你知道有一个函数已经进行了计算吗?我想它不会是一个函数。这将是一个大解放。也许会对youNice库有所帮助,但是,它不做任何与显示相关的计算,它只更改URL。