作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我怎样才能只获得“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
和 $1
在 replace 字符串中。
仅供引用,替换字符串中的$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/
我是一名优秀的程序员,十分优秀!