2012-11-19 128 views
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> 

回答

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

+0

感谢您的回复。我会尝试,但我认为它会很好。 – pxrb66

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')); 
+0

谢谢你小子,金正日会尽力。 – pxrb66