2011-06-27 62 views
-3

这是交易。我有一个字符串,其中包含html <a><img /></a>标签。该字符串是从rss返回的。我需要的是将字符串分成两部分。其中一个我想要<a><img></a>和其他变量中的字符串的其余部分。由PHP标签分割字符串由PHP标签开始

算法:

  • 检查字符串开头<a><img></a>
  • 找到<a><img></a>并保存在一个变量。
  • 从原始字符串中删除<a><img></a>
  • 返回两个变量。

<a href=""><img src="" /></a> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eros. Nam augue. Morbi fermentum elit sit amet metus. Cras libero nulla, 
ultricies pulvinar, dapibus eu, tempus et, turpis. Donec urna ligula, commodo ac, tristique ut, egestas eu, justo. Fusce consectetuer vehicula magna. In turpis risus, malesuada et, commodo eget, ornare et, mauris. 

问题:

无法弄清楚如何做到这一点在PHP。我在这个网站上看到了一些包含正则表达式和解析所有字符串的代码。我想找出一种方法,当正则表达式函数有第一个匹配时,它不会遍历整个字符串。 将在循环内使用它所以关于速度。

+0

我们已经看到了这个问题太频繁。 – cwallenpoole

+0

所以,如果你已经有一个算法,你的问题到底是什么? – NickAldwin

+0

@cwallenpolle:好的先生'Vote Down'你能引导我到一个吗? – Sisir

回答

4

如果你能保证你输入的字符串会始终处于这种格式,则:

$closetag = strpos($input, '</a>') + 4; // strpos will return position of `<`, so move up 4 chars 

if ($closetag !== FALSE) { 
    $first = substr($input, 0, $closetag); 
    $last = substr($input, $closetag); 
} else { 
    $first = $last = 'ERROR'; 
} 
+0

+1对*不*使用正则表达式,可能没有必要 – NickAldwin

+0

嗨,谢谢!好的解决方案,因为我不必使用正则表达式。还有一件事。该字符串不会总是以''开头。我们可能需要一个if语句。 – Sisir

+0

+1谢谢!完成它。 – Sisir