样式PHP非常难以证明

时间:2014-11-11 11:42:43

标签: php xml styling

我有一个表单,用户将在那里输入参考编号以检查他们的查询状态:

示例:用户将导航到此网页:http://www.cdreporting.co.uk/ajax/search2.html

然后他们输入他们的参考文献:" 1 "或" 2" ," 3"等等......无论他们分配了什么号码 然后显示一条简短的记录。

但我无法格式化显示的数据。我希望参考编号有不同的颜色,希望创建换行符,下划线电子邮件地址。但我不确定如何用我当前的.php代码

来做到这一点

如何编辑电子邮件等各个字段?所以我可以改变字体等..?仅使用"参考" php代码中声明的字段:

   <?php
   $q=$_GET["q"];

  $xmlDoc = new DOMDocument();
  $xmlDoc->load("cd_catalog.xml");

  $x=$xmlDoc->getElementsByTagName('Reference');

  for ($i=0; $i<=$x->length-1; $i++) {
  //Process only element nodes
  if ($x->item($i)->nodeType==1) {
  if ($x->item($i)->childNodes->item(0)->nodeValue == $q) {
  $y=($x->item($i)->parentNode);
 }
 }
 }

$cd=($y->childNodes);

for ($i=0;$i<$cd->length;$i++) {
//Process only element nodes
if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br>");
}
}
?> 

此代码中的字段显示:

记者:Test1 参考:1 提交:2014-11-08T00:00:00 状态:待定 官员:姓名1 电子邮件:test@email.com 电话:0113 1234

我也不确定为什么REFERENCE也是大写的, 我知道我们有你的属性,但我不确定如何将它们应用到php代码,因为我不知道如何引用每个单独的字段。


非常感谢您抽出宝贵时间提供帮助。

我有一个XML文件:http://www.cdreporting.co.uk/ajax/cd_catalog.xml  php指的是。

当某人有时间输入参考号时,会显示来自XML的数据。在XML上有一个电子邮件字段,我希望以不同的方式显示,即字体颜色的变化。我将如何在我的PHP代码中执行此操作?我知道我可以使用CSS,但在我的PHP代码中你会将它应用到电子邮件领域吗?。

基本上为我的xml

中的每个字段设置样式
哇Manys再次感谢...不幸的是,这对我来说非常困惑。将CSS样式放在一边,然后回到我的PHP代码。

可以让php在php中显示每个字段。

if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
if ($cd->item($i)->nodeName == "**REFERENCE**") {
    echo '<span class="reference">'.$cd->item($i)->childNodes->item(0)->nodeValue. '</span>';
} else {
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
}
echo("<br>");

if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
if ($cd->item($i)->nodeName == "**Reporter**") {
    echo '<span class="reference">'.$cd->item($i)->childNodes->item(0)->nodeValue. '</span>';
} else {
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
}
echo("<br>");

if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
if ($cd->item($i)->nodeName == "**Submission**") {
    echo '<span class="reference">'.$cd->item($i)->childNodes->item(0)->nodeValue. '</span>';
} else {
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
}
echo("<br>");

if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
if ($cd->item($i)->nodeName == "**Email**") {
    echo '<span class="reference">'.$cd->item($i)->childNodes->item(0)->nodeValue. '</span>';
} else {
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
}
echo("<br>");

上面看起来是对的吗?我可以编辑每个字段来更改字体或添加换行符吗?

1 个答案:

答案 0 :(得分:0)

你需要一些CSS,类似于:

.reference {color: blue;}

然后修改您的PHP以检查节点名称是&#34; REFERENCE&#34;并发出必要的标记来调用CSS:

//Process only element nodes
if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
if ($cd->item($i)->nodeName == "REFERENCE") {
    echo '<span class="reference">'.$cd->item($i)->childNodes->item(0)->nodeValue. '</span>';
} else {
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
}
echo("<br>");

您可以以相同的方式设置其他字段(节点)的样式,包括换行符和其他格式。如果你想要设置很多样式,请查看PHP的switch运算符。

至于&#34; REFERENCE&#34;大写,你的链接以这种方式显示在XML中。您可以使用另一个if语句来发出类似&#34;参考&#34;必要时,或者更正存储在XML中的内容。

现在我已经想过这个了,如果你将CSS样式命名为与XML节点名称相同,你可以很容易地为每个项目设置样式。根据您编写CSS的方式,您可以使样式相同或不同。

   //Process only element nodes
    if ($cd->item($i)->nodeType==1) {
      $class = strtolower($cd->item($i)->nodeName);
      echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
      echo "<span class=\"$class\">".$cd->item($i)->childNodes->item(0)->nodeValue. '</span>';
      echo("<br>");
   }

这将获取节点名称,使用strtolower将其强制为小写,然后将其分配给$ class。然后<span>元素使用$ class作为类名。无论你在CSS中为该类名写的是什么,都将被用作样式。

您可以应用相同的想法来设置名称的样式,但是您需要不同的类名。因此,像<span class=\"nn-$class\">"这样的东西会将类nn-reference应用于节点名称以供参考。

在某些情况下,您可能希望使用<div>而不是<span>进行块级格式化。您必须相应地决定和修改您的代码。

注意:我还没有测试过上面的代码;我需要XML才能做到这一点。可能存在小的语法错误,但这个想法是正确的。