没有在xpath中获取数组值

时间:2013-03-28 12:24:31

标签: php xml arrays xpath

这是我的reg.xml:

<childrens>
<child_4 entity_id="4" value="Activities" parent_id="2">
    <child_10066 entity_id="10066" value="Physical1" parent_id="4">
    <child_10067 entity_id="10067" value="Cricket" parent_id="10066">
        <child_10068 entity_id="10068" value="One Day" parent_id="10067"/>
    </child_10067>
    </child_10066>
</child_4>
<child_4331 entity_id="4331" value="Region" parent_id="2">
    <child_5069 entity_id="5069" value="Irungattukottai" parent_id="4331"/>
</child_4331>
</childrens>

这是我的product.xml文件:

<products>
  <product_id value="1">
    <tab_id value="351">
      <tab_name value="test1"/>
      <region_timezone value="1"/>
      <registrationstatus value="2"/>
      <eventstatus value="2"/>
      <dist_activity value="5"/>
      <dist_activity value="10068"/>
      <dist_activity value="10070"/>
      <dist_region value="5069"/>
      <dist_region value="5069"/>
      <dist_region value="5069"/>
    </tab_id>
  </product_id>
  <product_id value="2">
    <tab_id value="352">
      <tab_name value="test2"/>
      <region_timezone value="1"/>
      <registrationstatus value="2"/>
      <eventstatus value="2"/>
      <dist_activity value="5"/>
      <dist_activity value="10069"/>
      <dist_activity value="10070"/>
      <dist_region value="4457"/>
      <dist_region value="7140"/>
      <dist_region value="5069"/>
   </tab_id>
  </product_id>
</products>

这是我的尝试:

<?php
 $abc= $_POST['name'];
 list($first,$second) = explode('in',$abc);

 $text1[]=$first;
 $text2[]=$second;
 foreach($text1 as $event)
{
$event;
}
foreach($text2 as $region1)
{
$region1;
}
$r = file_get_contents('reg.xml');
$p = file_get_contents('product.xml');

$region = simplexml_load_string($r);
$product = simplexml_load_string($p);

list($entity) = $region->xpath("//*[@value='$event']/@entity_id");
$entity=(string)$entity;
echo "event:- $event, Region:- $region1, entity:- $entity";
 ?>

这是我的HTML文件:

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
    </script>
    <script>
    $(function(){
$("#filter").click(function(){
    var name = $('#select').val();
    alert(name);
    $.ajax({
        type: "POST",
        data: {"name":name} ,
        url: "array.php",
        async: false,       
        success: function(result) { 
        alert(result);
        $("#result").text(result);
        } 
    });   


    });
});
    </script>
</head>
<body>
    <input type="text" id="select">
    <input  type="button" id="filter" name="button" value="Search">
    <div id="result">
    </div>
</body>
</html>

我在文本框中输入了这个值: One Day in Irungattukottai
我已尝试使用此代码,但该代码无法使用,但它无法提供给我$entity
如果我尝试手动设置$event例如: - $event = "One Day"值,则工作
所以帮助我解决这个问题,我想我的foreach中的错误。 感谢。

1 个答案:

答案 0 :(得分:0)

foreach代码看起来很奇怪 - 不确定你在那里尝试做什么。但我认为你遇到的实际问题是爆炸(),因为它没有看到'in'这两个词的任何一侧的空间,所以你的一天最终将有一个空间,Irungattukottai将在开始时有一个空间。

你可以通过在explode()中包含空格或在它产生的两个字符串上使用trim()来解决这个问题。