php – 字符串解析帮助

我有一个像下面这样的字符串:

$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允许新行在文本中匹配.不在段落标记内的所有文本都将被忽略.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...