javascript - 将正则表达式从 JavaScript 移植到 PHP

标签 javascript php regex

我有一个在 JavaScript 应用程序上运行的正则表达式。

not.replace(/({[PF]}(.*?){\/[PF]})/g, '<a href="#projects/'+ project.get('slug') +'/' + project.get('uri_hash')+'">$2</a>');

例如,它基本上会查找 {P} 或 {F} 和 {/P} 或 {/F},并将这些字符之间的单词转换为链接。

{P}Haribo{/P}将输出为 <a href="/link/link">Haribo</a> 。我想将此功能移至服务器,但我很难移植到同一表达式的 PHP 版本。有谁知道如何编写 PHP 版本吗?

这是我的尝试:

$string = $notification->notification;
$patterns = array(
    '/{P}/',
    '/{F}/',
    '/{\/F}/',
    '/{\/P}/',
);
$replacements = array(
    '<a href="#projects/'.$notification->relational_project->slug.'/'.$notification->relational_project->uri_hash.'">',
    '<a href="#projects/'.$notification->relational_project->slug.'/'.$notification->relational_project->uri_hash.'">',
    '</a>',
    '</a>',
);

最佳答案

你就快到了。您所缺少的只是调用 preg_replace 。如果它的第一个和第二个参数是数组,它将根据模式逐个替换成员。因此,您的代码将变为:

$patterns = array(
  '/{P}/',
  '/{F}/',
  '/{\/F}/',
  '/{\/P}/',
);
$replacements = array(
  '<a href="#projects/'.$notification->relational_project->slug.'/'.$notification->relational_project->uri_hash.'">',
  '<a href="#projects/'.$notification->relational_project->slug.'/'.$notification->relational_project->uri_hash.'">',
  '</a>',
  '</a>',
);
echo preg_replace($patterns, $replacements, $yourText);

$yourText 是代码中的占位符变量。根据您的需要更换它。

关于javascript - 将正则表达式从 JavaScript 移植到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33944507/

相关文章:

javascript - 无法绘制由 "content"或 "background-image"而不是 "src"指定的图像

javascript - 使用 Javascript SVG 画线时,鼠标移动时会生成多个 <SVG>。如何确保只剩下最后一个 <SVG> ?

javascript - jQuery UI 扩展可拖动 "Snap"行

php - 登录时隐藏登录/注册按钮,注销时隐藏注销按钮

php - 如何使用 php 从文本中识别名称

Python:替换双引号中的制表符

java - 替换java中的通配符

javascript - 使用 vba 和 InternetExplorer.Application 重新计算 jquery 表单的火灾事件

php - MySQL 中的简单更新查询需要很长时间

jquery - 修复 RegEx 中的 JSLint 擒纵机构不良警告