0

我有一个包含多次“文章”一词的文本,例如:

我的文本标题第 1 条 bla bla 第 2 条 bla bla ...

我想这样拆分文本:

Text1=Article 1 bla bla
Text2=Article 2 bla bla
...
4

5 回答 5

2

最简单的方法是使用explode http://php.net/manual/de/function.explode.php

$text = "article 1 text text article 2 text 123";
$articles = explode("article", $text);

然后你有一个数组,每个“文章”后面都有一个文本(没有文章这个词!)

于 2012-11-19T15:08:13.963 回答
1

简单的:

$articles = explode("article", $text);

$text1 = $articles[0];

$text2 = $articles[1];
于 2012-11-19T15:15:35.053 回答
0

Hope one of these helps:

     $str = "My text title Article 1 bla bla Article 2 bla bla";

     $strArray = explode('Article', $str);

     echo '<pre>';
     print_r($strArray);
     echo '</pre>';

     $strArray = split('Article', $str);

     echo '<pre>';
     print_r($strArray);
     echo '</pre>';

     $strArray = preg_split("/(?=Article\b)/",$str);

     echo '<pre>';
     print_r($strArray);
     echo '</pre>';
于 2012-11-19T15:21:35.057 回答
0

而不是试图找到一个拆分模式,你应该寻找一个匹配的模式:

/Article.*?(?=Article|$)/

它匹配Article,后跟任何内容,但不包括另一个Article或行尾。

$str = 'some ething Article 1 2 3 Article 5 6 7';

preg_match_all('/Article.*?(?=Article)/', $str, $matches);
print_r($matches[0]);

输出:

Array
(
    [0] => Article 1 2 3 
    [1] => Article 5 6 7
)

编辑

只过滤掉Article后面的数字:

preg_match_all('/Article \d+/', $str, $matches);
// $matches[0] contains "Article 1" and "Article 5"
于 2012-11-19T15:19:37.743 回答
0

这可以通过以下方式完成:

$parts = preg_split("/(?=Article\b)/",$text);

文档

于 2012-11-19T15:07:27.223 回答