0

特定の問題があります。PHP で文字列形式のデータを取得しています。文字列から特定の値を分離する必要があります。私の文字列は次のようになります

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

Barcode formatQR_CODEParsed Result TypeTEXTParsed ResultMy Coat var ga.

上記の 2 つの例からわかるように、「バーコード形式 QR_CODEParsed Result Type」と「Parsed Result」の後のテキストが変更されています。strstr 関数を試しましたが、「解析結果」という単語が 2 回繰り返されているため、目的の出力が得られません。これらの後に来る値/テキストを抽出するにはどうすればよいですか?どうすればそれらを分離できますか?私は新しい蜂であるため、ガイドします。ありがとう

4

4 に答える 4

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);
?>
于 2013-01-29T10:33:29.260 に答える
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の要素を使用します。それがお役に立てば幸いです。

于 2013-01-29T10:43:08.607 に答える
0

最も速い方法は、この HTML コードを解析して子の値SimpleXMLを取得することです。<b>

于 2013-01-29T09:33:57.773 に答える
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 に答える