多个字符串拆分更多次

时间:2017-03-21 17:48:07

标签: php

在一个字符串中在我的数据库中有多个图像,所有排序:

url/image-1.jpg|text 1#
url/image-2.jpg|text 2#
url/image-3.jpg|text 3#

好吧,我需要为每个图片添加带有alt属性的新img标签。这是代码:

<img src="url/image-1.jpg" alt="text 1">
<img src="url/image-2.jpg" alt="text 2">
<img src="url/image-3.jpg" alt="text 3">

我尝试使用explode和for循环,但它不起作用。

$images = "
url/image-1.jpg|text 1#
url/image-2.jpg|text 2#
url/image-3.jpg|text 3#";

$parts = explode("#", $images);
for($i = 0; $i < count($parts); $i++){
    $parts2[$i] = explode("|", $parts[$i]);
    for($y=0; $y < count($parts2[$i]); $y++){        

        echo '<img src="'.trim($parts2[$y]).'" alt="$part[0]" />';            
    }
}

4 个答案:

答案 0 :(得分:0)

你可以使用爆炸两次

$str ="url/image-1.jpg|text 1#
url/image-2.jpg|text 2#
url/image-3.jpg|text 3#";

$str_row = explode('#',$str);

for ($i=0; $i<count($str_row)-2; $i++){
  $parts = explode('|',$str_row[$i] );
  echo '<img src="'.$parts[0] . " alt=" . $parts[1] .">";

}

答案 1 :(得分:0)

我想分享一些代码

 $string="url/image-1.jpg|text 1#
   url/image-2.jpg|text 2#
   url/image-3.jpg|text 3#";

$imgs=explode("#", $string);

foreach ($imgs as &$img) {
    $image=explode("|", $img);
    echo "<img src='".$image[0]."' alt='".$image[1]."'>";
}

答案 2 :(得分:0)

你可以使用这样的正则表达式来解决它:

<?php


// array of urls
$urls = [];


// add 3 urls to the array
array_push($urls, "url/image-1.jpg|text 1#");
array_push($urls, "url/image-2.jpg|text 2#");
array_push($urls, "url/image-3.jpg|text 3#");

// array that contains the extracted values from urls
$matches = [];


// loop through all urls
foreach($urls as $url){
    $match = null;
    // try to match the pattern
    preg_match("/\|(.*)#/", $url, $match);
    // if it does match the pattern then add it to the matches array
    if($match){
        array_push($matches, $match[1]);
    }
}



// print all matches
// outputs:
// text 1
// text 2
// text 3
foreach($matches as $match){
    echo $match . "<br>";
}

?>

答案 3 :(得分:0)

好吧,我改变了我的脚本并解决了问题。现在它工作正常。

$parts = explode("#", $images);        
for($i = 0; $i < count($parts); $i++){
    $teile2 = explode("|", $teile[$i]);                
    for($y = 0; $y < count($teile2[0]); $y++){                    
        echo '<img src="'.$urlAdresse.trim($urlImg).'" alt="'.trim($teile2[1]).'" />'."\n";

    }
}