从php中的特定字符串获取feed值

时间:2013-07-11 04:43:50

标签: php regex string replace find

我有以下Feed值

<item> 
 <description>&lt;strong&gt;Contact Number:&lt;/strong&gt; +91-00-000-000&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Rate:&lt;/strong&gt; xx.xx&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fees and Comments:&lt;br /&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;$0 fees&lt;/li&gt;&lt;li&gt;Indicative Exchange Rate&lt;/li&gt;</description>
</item>

现在我想获得联系号码和费率以及费用和评论的分数。

我怎样才能得到这个值..一个人????

4 个答案:

答案 0 :(得分:0)

描述

您可能应该使用解析引擎阅读此内容。但是如果你的用例很简单,那么这个正则表达式将会:

  • 捕获每个字段
  • 允许字段以任何顺序显示

^(?=.*?Contact\sNumber:<\/strong>([^<]*))(?=.*?Rate:<\/strong>([^<]*))(?=.*?Fees\sand\sComments:.*?<li>([^<]*)<.*?<li>([^<]*)<)

enter image description here

直播示例:http://www.rubular.com/r/j0aStij3L8

答案 1 :(得分:0)

这取决于您的其他Feed(或未来Feed)的可靠模式。它看起来不像XML解析器在这里工作,因为该示例看起来不像格式良好的XML。 一个好的开始方法是使用explode将字符串拆分为一个字符串数组,看起来像是一个很好的分隔符。所以这看起来像:

$split_feed = explode("<br />",$feed);

其中$ feed是问题中的Feed输入,$ split_feed将是您的输出数组。

然后,从该分割提要中,您可以使用strpos(或stripos)来测试字符串中的键,以确定它引用的字段,并替换以从键/值字符串中获取值。

答案 2 :(得分:0)

I think this is you want   
 <?php

    $value = '<strong>Contact Number:</strong> +91-00-000-000<br /><br />
              <strong>Rate:</strong> xx.xx<br /><br />
              <strong>Fees and Comments:<br /></strong><ul><li>$0 fees</li>
                <li>Indicative Exchange Rate</li>';

    $steps = explode('<br /><br />', $value);
    $step_2_for_contact_number = explode('</strong>', $steps[0]);

    $contact_number = $step_2_for_contact_number[1];

    $step_for_rate = explode('</strong>', $steps[1]);

    $rate = $step_for_rate[1];

    $feed_n_comment_s_1 = explode('</li>', $steps[2]);

    $feed_n_comment_s_2 = explode('<li>', $feed_n_comment_s_1[0]);

    $feed_n_comment = $feed_n_comment_s_2[1];

    echo $contact_number;
    echo "<br/>";
    echo $rate;
    echo "<br/>";
    echo $feed_n_comment;
    ?>

答案 3 :(得分:0)

您还可以查看此模式:(使用命名组)

(?<key>[a-zA-Z\d\s]+)(?=\:).*?\>(?<value>[^<]+)

Live Demo