使用php从字符串中获取文件名

euoag5mw  于 2023-11-16  发布在  PHP
关注(0)|答案(3)|浏览(163)

我想从下面给出的字符串中获取文件名(扩展名为.png或.jpg或.gif):

{src:"brand.png", id:"brand"},
    {src:"centpourcent.png", id:"centpourcent"},
    {src:"corsa.png", id:"corsa"},
    {src:"cta.png", id:"cta"},
    {src:"neons.png", id:"neons"}

字符串
从上面的字符串中,我想得到这样的输出:

[ brand.png, centpourcent.png, corsa.png, cta.png, neons.png ] // Or may be as string output


我尝试了下面的代码,但它不为我工作:

substr($images, strpos($images, "src:") + 5);


我得到的输出为

brand.png", id:"brand"},
        {src:"centpourcent.png", id:"centpourcent"},
        {src:"corsa.png", id:"corsa"},
        {src:"cta.png", id:"cta"},
        {src:"neons.png", id:"neons"}

9jyewag0

9jyewag01#

<?php
$string = '{src:"brand.png", id:"brand"},
    {src:"centpourcent.png", id:"centpourcent"},
    {src:"corsa.png", id:"corsa"},
    {src:"cta.png", id:"cta"},
    {src:"neons.png", id:"neons"}';

// Here I replace the src with "src" and id with "id"
$string = str_replace(['src', 'id'], ['"src"', '"id"'], $string);
// Then I wrap all the string in brackets to convert the string to valid JSON string.
$json = '[' . $string . ']';
// Finally I decode the JSON string into a PHP array.
$data = json_decode($json);
// Here I am going to save the images names.
$images = [];

// Here I iterate over the json body entries and I push into the $images array
// the image name
foreach($data as $entry) {
    array_push($images, $entry->src);
}

// And here I just print it out, to make sure the output is the following:
print_r($images);

// OUTPUT:
// Array
// (
//     [0] => brand.png
//     [1] => centpourcent.png
//     [2] => corsa.png
//     [3] => cta.png
//     [4] => neons.png
// )

字符串

fcipmucu

fcipmucu2#

您可以使用preg_match_all()来获取所有文件名。

$str = '{src:"brand.png", id:"brand"},
    {src:"centpourcent.png", id:"centpourcent"},
    {src:"corsa.png", id:"corsa"},
    {src:"cta.png", id:"cta"},
    {src:"neons.png", id:"neons"}';

$r = preg_match_all('~(?:src:")([^"]+)(?:")~',$str,$match);

var_dump($match[1])

字符串
输出量:

array(5) {
  [0]=>
  string(9) "brand.png"
  [1]=>
  string(16) "centpourcent.png"
  [2]=>
  string(9) "corsa.png"
  [3]=>
  string(7) "cta.png"
  [4]=>
  string(9) "neons.png"
}


又道:
如果要从指定的字符串生成有效的JSON字符串,也可以使用正则表达式来完成。该算法也可以在不更改“src”和“id”以外的键的情况下工作。

$jsonStr = '['.preg_replace('~\w+(?=:)~','"$0"', $str).']';

uubf1zoe

uubf1zoe3#

也可以使用Regex:(?<=")[^\\\/\:\*\?\"\<\>\|]+\.(?:png|jpg|gif)(?=")

相关问题