我有一个包含链接的数组。我正在尝试删除这些链接的一部分。例如:
( some random text)
我想更改这些链接,如下所示:
$array = [
"https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular",
"https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular"
];
有没有可能编辑数组项目的方法?
答案 0 :(得分:1)
给出数组:
$array = [
"https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular",
"https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular"
];
array_walk()
(在适当的位置修改数组)。这次使用正则表达式:
function filter_url(&$item)
{
preg_match('|(https:\/\/\w+\.\w{2,4}\/\w+-\w+)-.+|', $item, $matches);
$item = $matches[1];
}
array_walk($array, 'filter_url');
(看到它工作here)。
请注意,filter_url
通过引用传递了第一个参数,如文档中所述,因此对每个数组项的更改都将在适当位置执行并影响原始数组。
array_map()
(返回修改后的数组)只需使用substr
,因为我们几乎不了解您的实际要求:
function clean_url($item)
{
return substr($item, 0, 36);
}
$new_array = array_map('clean_url', $array);
工作here。
如何实际过滤数组元素的细节取决于您。
此处显示的示例似乎毫无意义,因为您将所有元素都设置为完全相同的值。如果您知道长度,可以使用substr
,也可以编写更强大的正则表达式。
由于示例中输入数组的所有元素都相同,因此我假设这并不代表您的实际输入。
您还可以使用for
,foreach
或while
迭代数组,但是当您具有特定的数组函数来处理这种情况时,这些选项中的任何一个似乎都不那么优雅
答案 1 :(得分:0)
有多种方法。一种方法是遍历项目,并使用substr()对其进行裁剪。
$arr = array("https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular",
"https://eksisozluk.com/merve-sanayin-pizzaciya-kapiyi-ciplak-acmasi--5868043?a=popular");
for ($i = 0; $i < count($arr); $i++)
{
$arr[$i] = substr($arr[$i], 0, 36);
}