0

別の文字列から文字列を抽出する際に問題があります。

この文字列を抽出したい:

<?xml version="1.0"?> <!--  Tests completed in 1036 milliseconds. 6

    tests of 6 passed, 0 failed. 
    --> <testsuite name=" Tests" timestamp="2012-11-19T16:37:10Z" tests="6" failures="0" time="1.036"> <testcase name="dede"
    classname="test1"> </testcase> </testsuite>

この文字列から:

2012/11/19 17:37:09.689 - INFO. - début du test 1
2012/11/19 17:37:09.689 - INFO. - début du test 2
2012/11/19 17:38:09.689 - INFO. - début du test 3
2012/11/19 17:39:09.689 - INFO. - début du fr 4
2012/11/19 17:40:09.689 - INFO. - début du de 5
2012/11/19 17:40:48.689 - INFO. - début du de 6
2012/11/19 17:40:49.689 - INFO. - génération du résultat
<?xml version="1.0"?>
<!--
 Tests completed in 1036 milliseconds.
6 tests of 6 passed, 0 failed. 
-->
<testsuite name=" Tests" timestamp="2012-11-19T16:37:10Z" tests="6" failures="0" time="1.036">
<testcase name="dede" classname="test1">
</testcase>
</testsuite>
4

2 に答える 2

0

テスト情報を上部にダンプせず、XMLマークアップに含めるか、まったく表示しない方がよいでしょう。

strposただし、文字列の抽出をどこから開始するかを判断するために使用できる可能性があると言っています。

$start_position = strpos ( $original_string , '<?xml' );

次に、開始位置を次のように使用しsubstr()ます。

$xml_string = substr( $original_string , $start_position );

これはテストされていませんが、おおよそ必要なものになるはずです。

strpos(): http: //php.net/manual/en/function.strpos.php
substr(): http: //php.net/manual/en/function.substr.php

于 2012-11-19T18:13:31.647 に答える
0

これは、PHP のsubstr関数を使用して行うことができます。この行を使用しheader('Content-Type: text/plain');て、XML が XML に変換されるのではなく、ブラウザに表示されるようにしました。文字列を実際の XML 文字列として使用する場合は、これを削除することをお勧めします。

$string = '2012/11/19 17:37:09.689 - INFO. - début du test 1
2012/11/19 17:37:09.689 - INFO. - début du test 2
2012/11/19 17:38:09.689 - INFO. - début du test 3
2012/11/19 17:39:09.689 - INFO. - début du fr 4
2012/11/19 17:40:09.689 - INFO. - début du de 5
2012/11/19 17:40:48.689 - INFO. - début du de 6
2012/11/19 17:40:49.689 - INFO. - génération du résultat
<?xml version="1.0"?>
<!--
 Tests completed in 1036 milliseconds.
6 tests of 6 passed, 0 failed. 
-->
<testsuite name=" Tests" timestamp="2012-11-19T16:37:10Z" tests="6" failures="0" time="1.036">
<testcase name="dede" classname="test1">
</testcase>
</testsuite>';
header('Content-Type: text/plain');
echo substr($string, strpos($string, '<?xml'));
于 2012-11-19T18:11:16.730 に答える