php - 使用 preg_replace 返回引用数组键并替换为值

标签 php regex url

我有这样一个字符串:

http://mysite.com/script.php?fruit=apple

我有一个这样的关联数组:

$fruitArray["apple"] = "green";
$fruitArray ["banana"] = "yellow";

我正在尝试在字符串上使用 preg_replace,使用数组中的键来反向引用 apple 并将其替换为绿色,如下所示:

$string = preg_replace('|http://mysite.com/script.php\?fruit=([a-zA-Z0-9_-]*)|', 'http://mysite.com/'.$fruitArray[$1].'/', $string);

进程应该返回

http://mysite.com/green/

显然这对我不起作用;如何在 preg_replace 语句中操作 $fruitArray[$1] 以便识别 PHP、反向引用并替换为绿色?

谢谢!

最佳答案

您需要使用/e eval 标志,或者如果您可以节省几行preg_replace_callback .

  $string = preg_replace(
     '|http://mysite.com/script.php\?fruit=([a-zA-Z0-9_-]*)|e',
     ' "http://mysite.com/" . $fruitArray["$1"] ',
     $string
  );

请注意整个 URL 连接表达式是如何用单引号括起来的。稍后它将被解释为 PHP 表达式,空格将消失,静态 URL 字符串将与 fruitArray 中的任何内容连接起来。

关于php - 使用 preg_replace 返回引用数组键并替换为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971771/

相关文章:

java - 如何从字符串正则表达式中提取数据

ios - 将在 ios 中的 safari 中打开的链接共享到我的应用程序?

php - 我怎样才能通过 Laravel 关系进行两次连接?

php - 从产品 ID 获取特定属性的值

php - Symfony2 - security.yml 中 `anonymous.key` 的用途

java - 如何获取没有文件的绝对URL路径

javascript - JQuery/Ajax - 更新 URL 而不刷新网页 - 应该与 IE8 和 IE9 兼容

javascript - 使用 jquery 的 CodeIgniter 动态输入并插入到数据库

ruby - 在 Ruby 的情况下使用带正则表达式匹配的命名捕获……什么时候?

Java:如何用一个替换多个回车?