php正则表达式基本

时间:2015-06-29 02:14:25

标签: php regex

我希望使用php

在这个html代码中使用regex thread_id
<a id="change_view" class="f_right" href="pm.php?view=chat&thread_id=462075438105382912">

我编写了这段代码,但它将空数组返回给我

  $success = preg_match_all('/pm\.php\?view=chat&thread_id=([^"]+)/', $con, $match2);

我的php代码有什么问题吗?

3 个答案:

答案 0 :(得分:1)

嗯,你说它给你一个空数组。但事实并非如此。以下是print_r()

返回的值
Array
(
    [0] => Array
        (
            [0] => pm.php?view=chat&thread_id=462075438105382912
        )
    [1] => Array
        (
            [0] => 462075438105382912
        )
)

但它没有回归你想要的东西。获取thread_id=之后和&" 之前的字符串的正则表达式为:

/(?<=thread_id=).*(?=\"|&)/

工作示例:

<?php 
$con = '<a id="change_view" class="f_right" href="pm.php?view=chat&thread_id=462075438105382912">link</a>';
$match2 = Array();
preg_match_all('/(?<=thread_id=).*(?=\"|&)/', $val, $arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>

输出:

Array
(
    [0] => Array
        (
            [0] => 462075438105382912
        )
)

答案 1 :(得分:0)

if (preg_match('/thread_id=[0-9]*/', $line, $matches))
    $thread_id = $matches[0];

答案 2 :(得分:0)

如果你只是在寻找thread_id,那就应该这样做。

$success = preg_match_all('/(thread_id=)([\d]+)/', $con, $match2);