我正在尝试生成一个允许我执行以下操作的正则表达式:
我有一个包含多个术语的字符串,所有术语都是字母数字,可能还有一些特殊字符:+.#
它们也用逗号分隔。
这就是它的样子:
$string = 'Term1,Term2,Term3,Term4';
......依此类推......(约60个词)
我希望能够获得每个术语并将其分配给变量,因为我想将第二个正则表达式用于长字符串,例如:
$secondString = 'This string may contain some terms, such as Term1, or maybe Term2';
所以我非常希望能够检查第一个字符串中的任何术语是否存在于第二个字符串中。
我观看了以下教程:
https://www.youtube.com/watch?v=EkluES9Rvak
但我似乎无法想出一些东西。
非常感谢您的帮助!
干杯!
答案 0 :(得分:1)
将字符串拆分为标记后,您可以使用array_intersect
function:
$string = 'Term1,Term2,Term3,Term4';
$secondString = 'This string may contain some terms, such as Term1, or maybe Term2';
$arr1 = explode(',', $string);
$arr2 = preg_split('/[,\h]+/', $secondString);
$arr = array_intersect(array_map('strtolower', $arr1), array_map('strtolower', $arr2));
print_r($arr);
<强>输出:强>
Array
(
[0] => Term1
[1] => Term2
)