如何从重复的字符串中提取子字符串?

时间:2013-01-29 09:31:23

标签: php string string-formatting

我有一个特定的问题。我正在以PHP格式检索字符串格式的数据。我必须从string中分离出特定的值。我的字符串看起来像这样

Barcode formatQR_CODEParsed Result TypeURIParsed Resulthttp://www.myurl.co.uk var ga.

Barcode formatQR_CODEParsed Result TypeTEXTParsed ResultMy Coat var ga.

从上面两个例子可以看出,“条形码格式Q_CODEParsed结果类型”和“解析结果”之后的文本正在发生变化。 我已经尝试过strstr函数,但是它没有给我想要的输出,因为“Parsed Result”这两个字重复了两次。我怎么能提取出来之后会出现的任何值/文本?我怎么能把它们分开呢?如果有人可以,我会很感激因为我是新蜜蜂。 感谢

4 个答案:

答案 0 :(得分:0)

最快的方法是使用SimpleXML解析这段HTML代码并获取<b>个孩子的值。

答案 1 :(得分:0)

直到你发现第一个区别为止。应该不是问题?

$str1 = "Hello World";
$str2 = "Hello Earth";

for($i=0; $<min(strlen($str1),strlen($str2)); $i++){
   if ($str1[$i] != $str2[$i]){
       echo "Difference starting at pos $i";
   }
}

或类似的东西。然后你可以使用substr删除相等的部分。

编辑:如果您的字符串始终具有相同的模式,并且<b>中包含的值可以完美地使用正则表达式来获取值。

答案 2 :(得分:0)

我找到了解决方案。我们可以通过这种方式提取字符串:

<?
  $mycode='Barcode formatQR_CODEParsed Result TypeURIParsed Resulthttp://www.myurl.co.uk var ga';
   $needle = 'Parsed Result';
   $chunk=explode($needle,$mycode);                                                            

  $mychunky= $chunk[2];

        $needle = 'var ga';
 $result = substr($mychunky, 0, strpos($mychunky, $needle));

 print($result);
?>

答案 3 :(得分:0)

这对你有用。此外,您可以进一步扩展这个想法,并根据自己的需要进行开发。

$string = "Barcode formatQR_CODEParsed Result TypeURIParsed Resulthttp://www.myurl.co.uk var ga." ;
$matches = array() ;
$pattern = "/Type([A-Z]+)Parsed Result([^>]+) var ga./" ;

preg_match($pattern, $string, $matches) ; // Returns boolean, but we need matches.

然后得到出现:

$matches[0] ; // The whole occurence
$matches[1] ; // Type - "([A-Z]+)"
$matches[2] ; // Result - "([^>]+)"

因此,分别使用带有indeces 1和2的元素作为Type和Result。希望它可以提供帮助。