获取php中两个特定字符之间的单词

Posted

技术标签:

【中文标题】获取php中两个特定字符之间的单词【英文标题】:get the words between two specific characters in php 【发布时间】:2014-09-23 15:30:23 【问题描述】:

如何获取字符“--#”和“#--”之间的单词 我尝试了正则表达式并爆炸,但我无法获得所需的输出。

输出必须是: Section 2, Section 3, Section 4, Section 5 ..................................................... ....................

--#第2节#-- -##Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt##-

--#第3节#-- -##Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt##-

--#第4节#-- -##Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt##-

--#第5节#-- -##Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt##-

【问题讨论】:

@fedorqui:或者没有 - 很可能 /#(.*?)#/,也许? 它实际上只有 php 和正则表达式。我只是点击了建议。对此感到抱歉。顺便感谢那些帮助我的人。 【参考方案1】:

通过 sed,

$ sed 's/.*--#\(.*\)#--.*/\1/g' file
Section 2

Section 3

Section 4

Section 5

【讨论】:

【参考方案2】:

你可以试试这个:

--#(.*)#--

DEMO

【讨论】:

【参考方案3】:

由于问题的标题明确指出:

获取php....中两个特定字符之间的单词。

你可以使用这个正则表达式:

preg_match_all('/--#(.*?)#--/', $text, $matches);
print_r($matches[1]);

解释

--#      # match '--#'
(        # group and capture to \1:
  .*?    #   any character except \n (0 or more times)
)        # end of \1
#--      # match '#--'

Working Demo

【讨论】:

这正是我需要的。,非常感谢,希望它也能对某些人有所帮助。,【参考方案4】:

如果你使用 BASH

不使用 sed 或任何其他命令的简单答案是执行以下操作

 VAR="--#Section 2#-- -##Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt##-"

 #delete from the tail 
 VAR=$VAR%%'#--'*                             //you will get VAR="--#Section 2"
 #delete from the head
 VAR=$VAR##*'--#'                             //NOW you'll have VAR="Section 2"

【讨论】:

以上是关于获取php中两个特定字符之间的单词的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中获取两个字符串之间的子字符串?

PHP 获取字符串的前两个单词

如何在jQuery中的两个字符串之间获取url的特定部分[重复]

在特定单词之后从字符串中获取子字符串

获取两个字符串之间的内容 PHP

替换出现在两个特定单词之间的一组字符串的所有出现