我正在尝试为我的字符串中的每个项目构建一个数组值,其周围有<p>
个标签(打开和关闭课程)。
我现在拥有的:
$info = $contentcr[0]['fulltext'];
preg_match_all('%^(<p[^>]*>.*?</p>)$%im', $info, $infoarray);
$splitinfo = preg_split('%^(<p[^>]*>.*?</p>)$%im', $info, -1, PREG_SPLIT_DELIM_CAPTURE);
当我以某种方式打印$splitinfo
这是我的数组时:
Array ( [0] =>
Afdeling: Bla & Bla
Locatie: ‘Stadhuis Rotterdam’ – Coolsingel 40 Rotterdam
Klant: Ontwikkelings
[1] =>
Bedrijf: Rotterdam Datum April 2013
[2] => )
这就是我的字符串($info
)的样子:
<p>Afdeling: Bla & Bla </p>
<p>Locatie: ‘Stadhuis Rotterdam’ – Coolsingel 40 Rotterdam</p>
<p>Klant: Ontwikkelings</p>
<p>Bedrijf: Rotterdam Datum April 2013</p>
如何将每个段落创建为单个数组值?
答案 0 :(得分:0)
使用以下正则表达式:
preg_match_all('@<p[^>]*>(.*?)</p>@im', $info, $infoarray);
它将匹配任何<p></p>
并选择内部内容(使用(.*?)
非贪婪)。 preg_match_all
将所有发现写入多维数组。第一个索引将包含完整匹配,而2..N
将包含匹配的组列表。在我们的例子中:
array(2) {
[0]=>
array(2) {
[0]=>
string(10) "<p>adf</p>"
[1]=>
string(9) "<p>xy</p>"
}
[1]=>
array(2) {
[0]=>
string(3) "adf"
[1]=>
string(2) "xy"
}
}
将生成。我们现在可以选择第二部分:
if (count($infoarray) > 1) {
// yes we found paragraphs!
$paragraphs = $infoarray[1];
}
无需额外拆分。
答案 1 :(得分:0)
你可以在下面使用
$info = $contentcr[0]['fulltext'];
$splitinfo = preg_split('/(<\s*p\s*\/?>)|(<\s*br\s*\/?>)|(\s\s+)|(<\s*\/p\s*\/?>)/', $info, -1, PREG_SPLIT_NO_EMPTY);