Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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 使用preg_match()查找与模式匹配的子字符串的开始/停止位置_Php_Preg Match_Strpos - Fatal编程技术网

Php 使用preg_match()查找与模式匹配的子字符串的开始/停止位置

Php 使用preg_match()查找与模式匹配的子字符串的开始/停止位置,php,preg-match,strpos,Php,Preg Match,Strpos,我想使用PHP复制字符串的子字符串 第一个模式的正则表达式是/\d\\d\w0:// 第二个模式的正则表达式是/\d\w\w\d+:\s-\s:// 是否可以将preg\u match与strpos相结合,以获得从头到尾的准确位置,然后用以下方法复制: substr( $string, $firstPos,$secPos ) ? preg_match的第三个参数是一个输出参数,用于收集捕获,即匹配的实际字符串。用这些来满足你的需求。strpo不接受正则表达式,但捕获将包含实际匹配的文本,该文本

我想使用PHP复制字符串的子字符串

第一个模式的正则表达式是
/\d\\d\w0://

第二个模式的正则表达式是
/\d\w\w\d+:\s-\s://

是否可以将
preg\u match
strpos
相结合,以获得从头到尾的准确位置,然后用以下方法复制:

substr( $string, $firstPos,$secPos ) ?

preg_match的第三个参数是一个输出参数,用于收集捕获,即匹配的实际字符串。用这些来满足你的需求。strpo不接受正则表达式,但捕获将包含实际匹配的文本,该文本包含在字符串中。要进行捕获,请使用括号

例如(没有尝试过,但这是为了获得想法):


我不确定,但也许你可以这样使用:

$mysubtext = preg_split("/\d\|\d\w0:/", $mytext);

$mysubtext = preg_split("/\d\w\w\d+:\s-\s:/", $mysubtext[1]);

$mysubtext = $mysubtext[0];
当然

或者,您可以将这些模式组合成一个新的超级神奇的模式,该模式匹配它们之间的内容(通过断言前缀出现在匹配的子字符串之前,后缀出现在匹配的子字符串之后)

$prefix='\d |\d\w0:';
$suffix='\d\w\w\d+:\s-\s:';

如果(preg_match(“/(?当使用
preg_match()
的第四个参数时,您甚至可以设置
preg_OFFSET_CAPTURE
标志,让函数返回匹配字符串的偏移量。因此,不需要将
preg_match()
strps()
组合起来


thx。非常有趣。它可以工作,但我必须修改正则表达式。它太笼统了。这是一个很好的答案。一个使用示例(特别是与OP相关的示例)将使它成为一个很好的答案(:
$mysubtext = preg_split("/\d\|\d\w0:/", $mytext);

$mysubtext = preg_split("/\d\w\w\d+:\s-\s:/", $mysubtext[1]);

$mysubtext = $mysubtext[0];
$prefix = '\d|\d\w0:';
$suffix = '\d\w\w\d+:\s-\s:';
if (preg_match("/(?<=$prefix).*?(?=$suffix)/", $subject, $match)) {
    $substring = $match[0];
}