我有一个包含多次“文章”一词的文本,例如:
我的文本标题第 1 条 bla bla 第 2 条 bla bla ...
我想这样拆分文本:
Text1=Article 1 bla bla
Text2=Article 2 bla bla
...
最简单的方法是使用explode
http://php.net/manual/de/function.explode.php
$text = "article 1 text text article 2 text 123";
$articles = explode("article", $text);
然后你有一个数组,每个“文章”后面都有一个文本(没有文章这个词!)
简单的:
$articles = explode("article", $text);
$text1 = $articles[0];
$text2 = $articles[1];
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>';
而不是试图找到一个拆分模式,你应该寻找一个匹配的模式:
/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"