如何从字符串中查找特定值

时间:2010-09-03 14:26:53

标签: php string parsing find

我有一个字符串(不是xml

<headername>X-Mailer-Recptid</headername>
<headervalue>15772348</headervalue>
</header>

由此,我需要获得值15772348,即headervalue的值。怎么可能?

4 个答案:

答案 0 :(得分:10)

使用PHP DOM并使用getElementsByTagName()遍历headervalue代码:

<?php
$doc = new DOMDocument;
@$doc->loadHTML('<headername>X-Mailer-Recptid</headername><headervalue>15772348</headervalue></header>');

$items = $doc->getElementsByTagName('headervalue');

for ($i = 0; $i < $items->length; $i++) {
    echo $items->item($i)->nodeValue . "\n";
}
?>

这提供了以下输出

  

15772348

[编辑]:代码已更新,以禁止关于无效的headername和headervalue标记的非HTML警告,因为它们实际上不是HTML标记。此外,如果您尝试将其加载为XML,则无法加载。

答案 1 :(得分:2)

这对我来说就像XML一样。无论如何,如果你不想将字符串解析为XML(这可能是一个好主意),你可以尝试这样的事情:

<?
$str = "<headervalue>15772348</headervalue>";
preg_match("/<headervalue\>([0-9]+)<\/headervalue>/", $str, $matches);
print_r($matches);
?>

答案 2 :(得分:1)

//找到字符串短路

function my_url_search($se_action_data)
    {
        // $regex = '/https?\:\/\/[^\" ]+/i';
           $regex="/<headervalue\>([0-9]+)<\/headervalue>/"
         preg_match_all($regex, $se_action_data, $matches);
         $get_url=array_reverse($matches[0]);
         return array_unique($get_url);
    }
echo my_url_search($se_action_data)

答案 3 :(得分:1)

       <?php
      $html = new simple_html_dom();
        $html = str_get_html("<headername>X-Mailer-Recptid</headername>headervalue>15772348</headervalue></header>");        // Use Html dom here 
        $get_value=$html->find("headervalue", 0)->plaintext;
        echo $get_value;

    ?>



  http://simplehtmldom.sourceforge.net/manual.htm#section_find