gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:41:48 26 4
gpt4 key购买 nike

我怎样才能只获得“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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com