javascript - JavaScript & PHP 替换包含 X 的字符串并重用 X 前后的字符串
问题描述
我有一种在消息中添加链接的自定义方式,文本看起来像这样:
<?php
$message = 'Some text some text mylink@https://www.mylink.com some text some text some text';
?>
我想获得所有出现的模式somelink@linkurl
并将它们替换为
<a href='linkurl'>somelink</a>
一旦用户提交他的消息,就可以建立一个真正的链接。
我需要在 JavaScript 和 PHP 中执行此操作。我实际上已经知道如何做到这一点,它将涉及通过分隔符拆分字符串,然后通过搜索@
-signs 过滤所有内容,然后在替换相应的值后以某种方式将所有内容放在一起。
我的想法听起来很复杂,所以我希望有一种更简单更有效的方法来实现相同的结果。
我如何在 Javascript 和 PHP 中最好地做到这一点?
解决方案
您可以在两种语言中使用相同的正则表达式模式:
/([^ ]+)@([^ ]+)/
([^ ]+)
表示“除空格之外的任何内容”,因此它还包括下划线和其他可以在 URL 中但不在\w
单词字符的正则表达式符号中的字符。
并将其替换为
<a href='$2'>$1</a>
PHP:
<?php
$re = '/([^ ]+)@([^ ]+)/';
$str = 'Some text some text mylink@https://www.mylink.com some text some text some text';
$subst = '<a href=\'$2\'>$1</a>';
$result = preg_replace($re, $subst, $str, 1);
JS:
const regex = /([^ ]+)@([^ ]+)/;
const str = `Some text some text mylink@https://www.mylink.com some text some text some text`;
const subst = `<a href='$2'>$1</a>`;
const result = str.replace(regex, subst);
结果:
Some text some text <a href='https://www.mylink.com'>mylink</a> some text some text some text
推荐阅读
- java - 在 android 11 中接收专辑封面
- php - PHP:在 php 中预处理 jpg 图像以获得常见的图像输入 4D-tensor
- c++ - (c ++)如何停止这个自动循环,为什么它重复相同的数字
- bash - 如果它们包含一个单词,则对 bash 中的行进行排序
- python - 配置 python cgi 时出现 500 内部服务器错误
- python - 将乘数 JPEG 图像保存为 PDF
- php - Amend node value in existing XML document and print result with DOM PHP
- node.js - 如何将 Firebase 与 Expo 结合使用
- django - django 删除超级用户状态
- javascript - 在 VueJS 中将对象 UUID 键引用到产品