php - 如何在 PHP 中从正则表达式中获取变量?

标签 php regex

我怎样才能只获得“regexed”的名称/变量?就像在这种情况下, anchor 的 href 中的 $1$0?

当我尝试回显 $1$0 时,我收到语法错误,因为它是一个数字。 目前,$str 是一个完整的文本。

function convertHashtags($str){
    $regex = "/#+([a-zA-Z0-9_]+)/";
    $str = preg_replace($regex, '<a href="hashtag.php?tag=$1">$0</a>', $str);
    return($str);
    }

最佳答案

简单的在preg_replace之前使用preg_match,例如

preg_match($regex, $str, $matches);

假设模式实际匹配,您应该在 $matches[0]$matches[1] 中得到结果,它们等同于 $0$1replace 字符串中。

仅供引用,替换字符串中的$n 标记不是 变量,尽管我可以看出这会造成怎样的混淆。它们只是对正则表达式中匹配组(或 $0 情况下的整个匹配)的引用。

参见 http://php.net/manual/function.preg-replace.php#refsect1-function.preg-replace-parameters


要在 $str 中查找多个匹配项,请使用 preg_match_all()。它几乎是一样的,只是它用一组匹配项填充 $matches。使用 PREG_SET_ORDER 标志作为第 4 个参数使数组可用。例如……

$str = ' xD #lol and #testing';
$regex = '/#(\w+)/';
preg_match_all($regex, $str, $allMatches, PREG_SET_ORDER);
print_r($allMatches);

产生...

Array
(
    [0] => Array
        (
            [0] => #lol
            [1] => lol
        )

    [1] => Array
        (
            [0] => #testing
            [1] => testing
        )

)

关于php - 如何在 PHP 中从正则表达式中获取变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31976837/

相关文章:

php - 为什么脚本(动态)语言没有指针?

php - JavaScript 问题

php - 在 OOP PHP 中编写计算器类的更简单方法

python - 正则表达式忽略数字后跟单词/非数字字符

javascript 正则表达式匹配所有自定义注释掉的部分,但不匹配其他文本

PHP:检查来自任何基于拉丁语的语言的字母字符?

regex - 使用正则表达式从 Google BigQuery 中的 url 中提取参数

php - 动态SQL插入查询

php - 将脚本函数卸载到响应后 : methods and best-practices?

java - java中的Unicode到String但很棘手