从php中的xml搜索过滤器

时间:2015-12-30 07:06:42

标签: php xml

我从我的XML中过滤了整个标题。

if(isset($_POST["submit"]))
        {

        $state=$_POST["state"];

        $title=$_POST["title"];


        $result = simplexml_load_file('sample.xml');
        $record = $result-> xpath('(/jobs/job[positiontitle="'.$title.'"])|(/jobs/job[state="'.$state.'"])');

         foreach ($record as $row):
$jobid=$row->jobid;

?>
        <li class="result"> 
        <a href="<?php print base_path(); ?>job/?<?php print $jobid;?>">
        <h3 class="title"><?php $title=$row->positiontitle; 
        echo $title; ?></h3>  
        </li>
 <?php 

         endforeach;
?>

这是我的xml

<jobs>
<job>
<jobid>
<![CDATA[ 02304485 ]]>
</jobid>
<positiontitle>
<![CDATA[ Maintenance Manager ]]>
</positiontitle>
</job>
</jobs>

如果我输入标题&#34; maintenance&#34;,标题应该被过滤。在sql中我们可以使用like操作进行过滤。这应该做什么?

1 个答案:

答案 0 :(得分:0)

我认为如果在xpath表达式中使用normalize-space来去除前导和尾随空格,这将有所帮助。

您可以更改此行:

$record = $result-> xpath('(/jobs/job[positiontitle="'.$title.'"])|(/jobs/job[state="'.$state.'"])');

到这一行:

$record = $result->xpath('/jobs/job[normalize-space(positiontitle)="' . $title . '"]|/jobs/job[normalize-space(jobid)="' . $state . '"]');