Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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,我正在制作我自己的论坛,我不想在上面有任何BB代码,而是我自己的, 所以我让[b][u][img]工作等等 但是我在[quote=1][/quote]中遇到了问题,其中数字是用户id 比方说我引用了某人的话 因此,一旦我提交我的帖子:(变量$post将是:) “[quote=1]引用帖子:P[/quote] 然后我如何从字符串中提取数字?(但不是错误的号码-不是引用文章中的号码) (因此,我可以使用str_replace()替换为一个表,使其看起来被引用) ??:) \[quote=([0-9]

我正在制作我自己的论坛,我不想在上面有任何BB代码,而是我自己的, 所以我让[b][u][img]工作等等

但是我在[quote=1][/quote]中遇到了问题,其中数字是用户id

比方说我引用了某人的话

因此,一旦我提交我的帖子:(变量$post将是:) “[quote=1]引用帖子:P[/quote]

然后我如何从字符串中提取数字?(但不是错误的号码-不是引用文章中的号码)

(因此,我可以使用str_replace()替换为一个表,使其看起来被引用)

??:)

\[quote=([0-9]*)\]
并获取捕获的字符串$1

$pattern = "{\[quote=([0-9]*)\](.*)\[\/quote\]}";
$subject = $post;
preg_match($pattern, $subject, $matches);

//$matches[0] contains the whole string
//$matches[1] contains the id
\[quote=([0-9]*)\]
并获取捕获的字符串$1

$pattern = "{\[quote=([0-9]*)\](.*)\[\/quote\]}";
$subject = $post;
preg_match($pattern, $subject, $matches);

//$matches[0] contains the whole string
//$matches[1] contains the id

这应该对你有用

$post = '[quote=1] Quoted post :P[/quote]';
if (preg_match("/\\[quote=([\d]+)\\]/",$post,$matches)) {
  //echo "<pre>".print_r($matches,true)."</pre>";
  $quote_user = $matches[1];
}
$post='[quote=1]引用的post:P[/quote];
if(preg\u match(“/\\[引号=([\d]+)\\]/”,$post,$matches)){
//echo“”。打印($matches,true)。“”;
$quote_user=$matches[1];
}

这应该对你有用

$post = '[quote=1] Quoted post :P[/quote]';
if (preg_match("/\\[quote=([\d]+)\\]/",$post,$matches)) {
  //echo "<pre>".print_r($matches,true)."</pre>";
  $quote_user = $matches[1];
}
$post='[quote=1]引用的post:P[/quote];
if(preg\u match(“/\\[引号=([\d]+)\\]/”,$post,$matches)){
//echo“”。打印($matches,true)。“”;
$quote_user=$matches[1];
}

使用正则表达式来实现BB代码是非常常见的。当然,您可以使用str_replace之类的工具,但稍后可能会遇到一些问题

使用以下模式确保quote标记也被关闭:

echo preg_replace('/\[quote=(\d+)\](.*?)\[\/quote\]/is',
    '<b>\\1 wrote:</b> \\2',
    $input
);
现在您应该使用preg_replace或preg_match来处理它

例如:

$input = "text [quote=11]my quoted post
        abc[/quote]
        [quote=20]my quoted post 2[/quote]";


if(preg_match_all('/\[quote=(\d+)\](.*?)\[\/quote\]/is', $input, $matches)) {
    var_dump($matches);
}

使用正则表达式来实现BB代码是非常常见的。当然,您可以使用str_replace之类的工具,但稍后可能会遇到一些问题

使用以下模式确保quote标记也被关闭:

echo preg_replace('/\[quote=(\d+)\](.*?)\[\/quote\]/is',
    '<b>\\1 wrote:</b> \\2',
    $input
);
现在您应该使用preg_replace或preg_match来处理它

例如:

$input = "text [quote=11]my quoted post
        abc[/quote]
        [quote=20]my quoted post 2[/quote]";


if(preg_match_all('/\[quote=(\d+)\](.*?)\[\/quote\]/is', $input, $matches)) {
    var_dump($matches);
}

好的,我已经开始工作了,有一个问题:([quote]打开一个表[/quote]关闭它,但是如果有人引用了一个线程-并且忘记了引用[/quote]或其他什么东西…这个表(以及整个论坛)坏了,我如何确保一个[quote]跟随一个[quote]?(并且只有一个[/quote])看看我的答案。)有一些事情你必须注意,例如,一个引用可能包含换行符,或者一篇文章中可能有多个引用。好吧,我已经开始工作了,有一个问题:([quote]打开一个表[/quote]关闭它,但是如果有人引用了一个线程,并且忘记了[/quote]或其他什么的话……这个表(以及整个论坛)休息一下,我怎样才能确保一个[quote]跟在一个[quote]后面?(而且只有一个[quote]):)看看我的答案有些事情你必须注意,例如,一个报价可能包括换行符,或者一篇文章中可能有多个报价。