Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式查找分隔字符串后的所有文本_Php_Regex - Fatal编程技术网

Php 正则表达式查找分隔字符串后的所有文本

Php 正则表达式查找分隔字符串后的所有文本,php,regex,Php,Regex,我有一些内容在表单中包含令牌字符串 $string_text = '[widget_abc]This is some text. This is some text, etc...'; 我想在第一个']'字符后提取所有文本 因此,我在本例中寻找的返回值是: This is some text. This is some text, etc... 编辑 根据作者的要求-补充说明: preg_match(param1,param2,param3)是一个函数,它允许您匹配您要查找的正则表达式的单个

我有一些内容在表单中包含令牌字符串

$string_text = '[widget_abc]This is some text. This is some text, etc...';
我想在第一个']'字符后提取所有文本

因此,我在本例中寻找的返回值是:

This is some text. This is some text, etc...
编辑 根据作者的要求-补充说明:

preg_match(param1,param2,param3)是一个函数,它允许您匹配您要查找的正则表达式的单个案例场景

param1=“/^.+?]”(.+?)$/is”

“//”是放置在param1中正则表达式外部的内容

末尾的i表示不区分大小写(不管字母是“a”还是“a”)

s-允许脚本跨越多行

^-从字符串的开头开始检查

$-一直到字符串的末尾

.-表示任何字符

.+-任何内容的至少一个或多个字符

.+?-至少还有一个以上的字符,直到您达到

.+?]-至少一个或多个字符(前面有反斜杠),因为它在正则表达式中表示某些内容-查找)

(.+)$-捕获]之后的所有内容,并将其作为单独的元素存储在param3中定义的数组中

param2=您创建的字符串


我试图简化解释,我可能不同意,但我认为我在很大程度上是对的。

正则表达式
(?这里需要正则表达式有什么特别的原因吗

$output = preg_replace('/^[^\]]*\]/', '', $string_text);
echo substr(strstr($string_text, ']'), 1);

在这个例子中,正则表达式绝对是矫枉过正的

这是一条很好的单行线:

list(, $result) = explode(']', $inputText, 2);

它完成了这项工作,而且比使用正则表达式要便宜得多。

1)您需要在代码中添加
也应该删除。2) 还要注意的是,在字符类中求反后不需要立即转义
]
——但这不是错误。@Staffan感谢您的指点,而是关于(1)
是PHP行的结尾,而不是字符串的结尾(即,它是终止字符串和行的PHP语法的一部分,而不是字符串本身的一部分)。关于(2),个人偏好是避免混合我需要/不需要逃避的东西。所以,我更喜欢逃避(这是更有保证的)。关于(1)你是绝对正确的。(2)当然是口味的问题:-)@Staffan:文本是通过file_get_内容来自文本文件的。我跳过了那个部分,转到变量中的部分。我应该指定…@Staffan:The
结束字符串并结束代码行。它不匹配,因为它不是字符串本身的一部分。+1产生一个符咒。如果我可能会问,我将如何修剪直到字符串中的第一个非空白字符。目前由于“]”标记后的换行,我的内容在字符串前面有空格…@Scott B-添加了解释并对trim()的代码进行了更新,谢谢您的回答。我想我可以在我的问题中说得更清楚,正如你在回答中所说的那样:-)要替换的文本来自一个文本文件,通过file_get_contents。我刚刚以内容为例制作了一个字符串结束字符串并结束代码行。它不匹配,因为它不是字符串本身的一部分。@Scott B@Rocket好的,那么我将删除该部分。
echo substr(strstr($string_text, ']'), 1);
list(, $result) = explode(']', $inputText, 2);