Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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,我试图使用PHP正则表达式从字符串中获取唯一ID,但在生成正则表达式模式时遇到问题 示例URL lesson-computer-networking-xpt2-t9295779.html // need to get 9295779 lesson-summary-t9295778.html //need to get 9295778 lesson-part2-t94.html //need to get 94 字符串第一部分的长度取决于页面标题,但最后一部分始终为-txxxxxxxx.html

我试图使用PHP正则表达式从字符串中获取唯一ID,但在生成正则表达式模式时遇到问题

示例URL

lesson-computer-networking-xpt2-t9295779.html // need to get 9295779
lesson-summary-t9295778.html //need to get 9295778
lesson-part2-t94.html //need to get 94
字符串第一部分的长度取决于页面标题,但最后一部分始终为-txxxxxxxx.html


有人能帮我生成模式吗?

您可以使用下面的正则表达式来获取t之后的数字,即.html之前的数字

说明:


?您可以使用以下内容:

$url = 'lesson-computer-networking-xpt2-t9295779.html';
$matches = array();
$t = preg_match('/-t(.*?)\.html$/s', $url, $matches);
print_r($matches[1]);
这是我的帕特伦

-t(\d+)\.html

@kingkero问题是我不知道regex模式。谢谢你的模式!非常感谢。@Naveengmage很高兴它成功了:-感谢您的解释,如果URL是LESSION-tpart2-t94怎么办。htmlPage标题是在用户输入时生成的,因此如果用户输入一些与唯一ID字段冲突的字母T表示的单词。@Naveengmage然后使用此正则表达式
<?php
$data = <<<'EOT'
lesson-computer-networking-xpt2-t9295779.html
lesson-summary-t9295778.html
lesson-part2-t94.html
EOT;
$regex = '~(?<=-t).*(?=\.html)~';
preg_match_all($regex, $data, $matches);
var_dump($matches);
?>
array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(7) "9295779"
    [1]=>
    string(7) "9295778"
    [2]=>
    string(2) "94"
  }
}
$url = 'lesson-computer-networking-xpt2-t9295779.html';
$matches = array();
$t = preg_match('/-t(.*?)\.html$/s', $url, $matches);
print_r($matches[1]);
-t(\d+)\.html