【问题标题】:How can I find each instance of a string inside two other strings (Tags)如何在其他两个字符串中找到字符串的每个实例(标签)
【发布时间】:2011-04-19 17:22:26
【问题描述】:

我正在使用的代码在另外两个字符串(标签)中搜索一个字符串。它搜索的字符串是一个 ID 列表。 ID 列在标签之间。我的代码可以成功拉取并列出一个 ID,但是有没有办法循环它并让它全部拉取并将它们分配给变量或数组?

代码如下:


function get_string_between($string, $start, $end){

$string = " ". $string;

$ini = strpos($string,$start);

if ($ini == 0) return "";

$ini += strlen($start);

$len = strpos($string, $end, $ini) - $ini;

return substr($string, $ini, $len);

}


$resumeid = get_string_between($xml, "<ResumeID>", "</ResumeID>");

echo $resumeid;

我尝试使用 foreach() 函数,但它似乎不起作用:

foreach( $resumeid as $item )
{
    echo $item.'<br />';
}

我将如何做到这一点?

【问题讨论】:

  • 你可能想看看 PHP 的 XML 操作特性,而不是字符串操作。
  • 如果您从 DOM 元素中提取文本节点,为什么不使用 DOM 解析器呢?它会比正则表达式更健壮。
  • 感谢您的快速回复。 @Gordon 我尝试使用一些 XML 操作功能,例如 simpleXML,但它似乎从来没有工作过。字符串只是一堆没有 XML 编码的标签。
  • @dnagirl 我对 DOM 解析器不是很熟悉。我检查了这些,看看我能想出什么。你能指出我正确的方向吗?

标签: php html xml string


【解决方案1】:

你需要循环函数不只是函数的结果或者只使用正则表达式而不是一系列复杂的字符串函数会容易得多。

preg_match_all("/(<ResumeID>)(\w+)(<\/ResumeID>)/", $xml, $matches);

foreach ($matches[0] as $match)
{
    echo $match."<br />";
}

【讨论】:

  • 我认为你没有使用 SimpleXML php.net/manual/en/book.simplexml.php 之类的东西是有原因的
  • 这正是我需要的。谢谢!我确实考虑过使用 SimpleXML,但我确实需要做的事情超出了它允许的范围。
猜你喜欢
  • 2014-12-11
  • 2020-06-23
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多