我有一个在 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/