加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP:我需要像split()这样的东西,但是

发布时间:2020-12-13 17:12:14 所属栏目:PHP教程 来源:网络整理
导读:所以我实际上存储了一个html字段,但是我想添加一些伪标签以便于发布. I.E.我想将标题/标题包装到此标记中: ... 例如. 我的标题 然后我会枚举它们,格式化并显示下面的文本. 例如.: NewsBreaking news on Sunday.Have been taking hostages.General Informat
所以我实际上存储了一个html字段,但是我想添加一些伪标签以便于发布.
I.E.我想将标题/标题包装到此标记中:<< ...>>
例如. <<我的标题>>
然后我会枚举它们,格式化并显示下面的文本.

例如.:

<<News>>
Breaking news on Sunday.
Have been taking hostages.
<<General Information>>
We would want to recieve our blabla.
And you want it.
<<User Suggestions>>
Yeah we want it so much...

应该显示:

<H1 class="whatever" ID="Product_Header_1">News<H1>
Breaking news on Sunday.
Have been taking hostages.
<H1 class="whatever" ID="Product_Header_2">General Information</H1>
We would want to recieve our blabla.
And you want it.
<H1 class="whatever" ID="Product_Header_3">User Suggestion</H1>
Yeah we want it so much...

然后应该返回一个包含实际标题及其编号的数组,这样我就可以在页面的其他地方使用它来进行引用.

所以看起来我们可以直接替换它们,但是这可能会在枚举和返回值时出现问题,并且在未关闭标记的情况下可能会失败.

或者,将它们分成一个数组,然后手动进行,这似乎是一个更好的方法.

这是我到目前为止所尝试的:

$TEXT_A=preg_split('/<<([^>]+)>>/',$TEXT);

foreach($TEXT_A as $key => $val){
    if ($key>0) echo "<br>-!-";
    echo $val;
}

其中$TEXT是带有伪标签的HTML文本.

但问题是,split并没有返回regexp匹配本身,所以我对如何提取它感到困惑.也许我需要编写一些自定义函数来返回一个文本和标题数组,而不是常规拆分,但我不知道从哪里开始……

请帮忙.

解决方法

只是用

$text_a = preg_split('/<<([^>]+)>>/',$text,-1,PREG_SPLIT_DELIM_CAPTURE);

你会在$text_a的奇数索引处找到你的标题标签.假设您要忽略第一个标头之前的内容:

$n = count($text_a);
$head_a = array();
$body_a = array();
for ($i = 1; $i < $n; $i += 2) {
   $head_a[] = $text_a[$i];
   $body_a[] = $text_a[$i + 1]; // trim()?
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读