我想在PHP变量中添加一个非常大的HTML字符串。当我执行import vtk
import math
view = vtk.vtkContextView()
view.GetRenderer().SetBackground(1.0, 1.0, 1.0)
view.GetRenderWindow().SetSize(400, 300)
chart = vtk.vtkChartXY()
view.GetScene().AddItem(chart)
chart.SetShowLegend(True)
table = vtk.vtkTable()
arrX = vtk.vtkFloatArray()
arrX.SetName('X Axis')
arrC = vtk.vtkFloatArray()
arrC.SetName('Cosine')
arrS = vtk.vtkFloatArray()
arrS.SetName('Sine')
arrT = vtk.vtkFloatArray()
arrT.SetName('Sine-Cosine')
table.AddColumn(arrC)
table.AddColumn(arrS)
table.AddColumn(arrX)
table.AddColumn(arrT)
numPoints = 40
inc = 7.5/(numPoints-1)
table.SetNumberOfRows(numPoints)
for i in range(numPoints):
table.SetValue(i, 0, i*inc)
table.SetValue(i, 1, math.cos(i*inc))
table.SetValue(i, 2, math.sin(i*inc))
table.SetValue(i, 3, math.sin(i*inc)-math.cos(i*inc))
points = chart.AddPlot(vtk.vtkChart.POINTS)
points.SetInput(table, 0, 1)
points.SetColor(0, 0, 0, 255)
points.SetWidth(4.0)
points.SetMarkerStyle(vtk.vtkPlotPoints.DIAMOND) #CROSS, SQUARE, CIRCLE...
points = chart.AddPlot(vtk.vtkChart.POINTS)
points.SetInput(table, 0, 2)
points.SetColor(0, 0, 0, 255)
points.SetWidth(1.0)
points.SetMarkerStyle(vtk.vtkPlotPoints.PLUS)
points = chart.AddPlot(vtk.vtkChart.POINTS)
points.SetInput(table, 0, 3)
points.SetColor(0, 0, 255, 255)
points.SetWidth(1.0)
points.SetMarkerStyle(vtk.vtkPlotPoints.CIRCLE)
view.GetRenderWindow().SetMultiSamples(0)
view.GetInteractor().Initialize()
view.GetInteractor().Start()
之类的操作时,字符串将变为灰色,而正常突出显示不再有效。我想使用一些PHP来构建HTML,但大部分都将直接编码到文件中。我无法回应它需要在变量中传递给函数的HTML。
除$html = "<div>info</div>";
之外还有其他方法可以将数据分配给变量,以便我能够保持语法高亮。我的想法是某种语法,它允许我关闭PHP标记,但不会输出内容,而是将输出保存到变量。
$html = "";
我理解这是不可能的,因为服务器不会读取PHP标签之外的任何行,但它只是一个例子来了解我正在尝试做的事情。
编辑 我也想过使用
?$html>
<div>content</div>
<?php
这会浪费,因为它会为PHP页面创建另一个HTTP请求。页面需要是PHP才能动态构建一些HTML
答案 0 :(得分:1)
您可以对ob_start和ob_get_clean使用输出缓冲:
<?php
ob_start();
?>
<html>
... all your html comes here
</html>
<?php
$html = ob_get_clean();
?>
在上面的代码末尾,没有任何内容输出到浏览器,但 $ html 变量将包含内容。