Php 使用preg\u replace获取$\u get变量
我创建了以下PHP函数:Php 使用preg\u replace获取$\u get变量,php,regex,preg-replace,Php,Regex,Preg Replace,我创建了以下PHP函数: <?php function convertGET($str) { $regex = '/GET:+([a-zA-Z0-9_]+)/'; $str = preg_replace($regex, $_GET["$1"], $str); return($str); } $string = "foobar: GET:foobar"; $string = convertGET($string); echo $string; ?> 函数用
<?php
function convertGET($str) {
$regex = '/GET:+([a-zA-Z0-9_]+)/';
$str = preg_replace($regex, $_GET["$1"], $str);
return($str);
}
$string = "foobar: GET:foobar";
$string = convertGET($string);
echo $string;
?>
函数用于获取字符串并替换以下内容:
GET:foobar
使用$\u GET
变量“foobar”。使用preg\u replace\u callback()
:
<?php
$input = array("foobar" => "Some other string");
$regex = '~GET:([a-zA-Z0-9_]+)~';
$string = "foobar: GET:foobar";
$string = preg_replace_callback($regex,
function($matches) use ($input) {
return $input[$matches[1]];
},
$string);
echo $string;
// output: foobar: Some other string
?>
请参阅。我发现的唯一方法是将正则表达式拆分为两行(这不是一种很好的方法,但它很有效): 首先我搜索匹配模式,然后应用替换为
$\u GET[found]
值
编辑:
添加了
$valueOnly
参数:如果设置为True
,则只返回$\u GET
变量的值。出于某种原因,只有在代码中设置GET变量而不抛出URL时,它才起作用。我该怎么办?@shanidahan你有没有仔细检查过$u GET设置好了?在函数前面放一个var\u dump($\u GET)
。好的,它在我制作的一个文件中工作,但在另一个文件中,它读取一个XML文件(包含文件内容)和echo convertGET(文件内容(“file.XML”))它不工作。(在一些XML标记中,有一个值:GET:something,它只是将标记保留为空。@shanidahan你能发布该文件的url吗?我已经测试了脚本,它对我有效
function convertGET( $str, $valueOnly=False )
{
$regex = '/GET:+([a-zA-Z0-9_]+)/';
preg_match( $regex, $str, $matches);
if( $valueOnly ) return $_GET[$matches[1]];
$str = preg_replace($regex, $_GET[$matches[1]], $str);
return $str;
}