$string = "
<paragraph>apples are red...</paragraph>
<paragraph>john is a boy..</paragraph>
<paragraph>this is dummy text......</paragraph>
";
我想将此字符串拆分为一个数组,该数组包含< paragraph>< / paragraph>之间的文本.标签.例如:
$string = "
<paragraph>apples are red...</paragraph>
<paragraph>john is a boy..</paragraph>
<paragraph>this is dummy text......</paragraph>
";
$paragraphs = splitParagraphs($string);
/* $paragraphs Now contains:
$paragraphs[0] = apples are red...
$paragraphs[1] = john is a boy...
$paragraphs[1] = this is dummy text...
*/
有任何想法吗?
P.S它应该是不区分大小写的,<段>,< ParaGRAPH>,<段落>应该以同样的方式对待所有人.
编辑:这不是XML,这里有很多东西会破坏XML的结构,因此我不能使用SimpleXML等.我需要一个正则表达式来解析它.
解决方法:
如果这实际上是XML,那么我同意其他答案.但是如果它不是有效的XML,而只是看起来像XML的模糊,那么你不应该尝试用XML解析器来解析它.相反,您可以使用正则表达式:
$matches = array();
preg_match_all(":<paragraph>(.*?)</paragraph>:is", $string, $matches);
$result = $matches[1];
print_r($result);
输出:
Array
(
[0] => apples are red...
[1] => john is a boy..
[2] => this is dummy text......
)
请注意,i表示不区分大小写,s允许新行在文本中匹配.不在段落标记内的所有文本都将被忽略.