0

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

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

Barcode formatQR_CODEParsed Result TypeTEXTParsed ResultMy Coat var ga.

从上面两个例子可以看出,“Barcode formatQR_CODEParsed Result Type”和“Parsed Result”后面的文字发生了变化。我已经尝试过 strstr 函数,但它没有给我想要的输出,因为“解析结果”这个词重复了两次。我怎样才能提取将在这些之后出现的任何值/文本?如何将它们分开?如果有人可以,我将不胜感激指导我是新蜜蜂。谢谢

4

4 回答 4

0

I have found the solution .We can extract strings this way:

<?
  $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);
?>
于 2013-01-29T10:33:29.260 回答
0

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

于 2013-01-29T09:33:57.773 回答
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 - "([^>]+)"

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

于 2013-01-29T10:43:08.607 回答
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>可以完美地使用正则表达式来获取值。

于 2013-01-29T09:37:29.963 回答