关联数组中的URL列表

时间:2014-05-11 00:29:40

标签: php arrays

我的字符串如下所示:

http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpghttp://localhost/layerthemes/wp-content/uploads/2014/05/Eddy-Need-Remix-mp3-image.jpghttp://localhost/layerthemes/wp-content/uploads/2013/03/static-pages.png

如何在数组中提取每个网址:

array( 
  0 => 'http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpg' 

  1 => 'http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpg' 

  2 => 'http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpg' 
)

这是我尝试无效的方式:

  $imgss = 'http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpghttp://localhost/layerthemes/wp-content/uploads/2014/05/Eddy-Need-Remix-mp3-image.jpghttp://localhost/layerthemes/wp-content/uploads/2013/03/static-pages.png';

    preg_match_all(
        "#((?:[\w-]+://?|[\w\d]+[.])[^\s()<>]+[.](?:\([\w\d]+\)|(?:[^`!()\[\]{};:'\".,<>?«»“”‘’\s]|(?:[:]\d+)?/?)+))#",
        $imgss
    ); 

    foreach($imgss as $imgs){
        echo '<img src="'.$imgs.'" />';
    }

任何帮助将不胜感激。不用说我在php中非常弱势

由于

4 个答案:

答案 0 :(得分:4)

如果字符串中没有空格,您可以使用:

$string = 'http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpghttp://localhost/layerthemes/wp-content/uploads/2014/05/Eddy-Need-Remix-mp3-image.jpghttp://localhost/layerthemes/wp-content/uploads/2013/03/static-pages.png';

$string = str_replace( 'http', ' http', $string );
$array = array_filter( explode( ' ', $string ) );


print_r( $array );

答案 1 :(得分:1)

爆炸很好,但也许你也应该验证输入的链接,我把它放在一起,它会让你知道输入的链接需要在一个新的行上或它们之间有空格,然后它将验证链接并创建一组新的有效链接,然后您可以使用。

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' & !empty($_POST['links'])){

    //replace all \r\n and \n and space with , delimiter
    $links = str_replace(array(PHP_EOL, "\r\n", " "), ',', $_POST['links']);

    //explode using ,
    $links = explode(',', $links);

    //validate links by going through the array
    foreach($links as $link){

        //does the link contain more then one http://
        if(substr_count($link, 'http://') >1){
            $error[] = 'Add each url on a new line or separate with a space.';
        }else{

            //does the link pass validation
            if(!filter_var($link, FILTER_VALIDATE_URL)){
                $error[] = 'Invalid url skipping: '.htmlentities($link);
            }else{

                //does the link contain http or https
                $scheme = parse_url($link, PHP_URL_SCHEME);
                if($scheme == 'http' || $scheme == 'https'){
                    //yes alls good, add to valid links array
                    $valid_links[] = $link;
                }else{
                    $error[] = 'Invalid url skipping: '.htmlentities($link);
                }
            }
        }

    }

    //show whats wrong
    if(!empty($error)){
        echo '
        <pre>
        '.print_r($error, true).'
        </pre>';
    }

    //your valid links do somthing
    if(!empty($valid_links)){
        echo '
        <pre>
        '.print_r($valid_links, true).'
        </pre>';
    }

}?>
<form method="POST" action="">
    <textarea rows="2" name="links" cols="50"><?php echo (isset($_POST['links']) ? htmlentities($_POST['links']) : null);?></textarea><input type="submit" value="Submit">
</form>

也许会有所帮助。

答案 2 :(得分:0)

怎么样:

$input = "http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpghttp://localhost/layerthemes/wp-content/uploads/2014/05/Eddy-Need-Remix-mp3-image.jpghttp://localhost/layerthemes/wp-content/uploads/2013/03/static-pages.png";
$exploded = explode("http://", $input);

$result;
for ($i = 1; $i < count($exploded); ++$i)
{
    $result[$i - 1] = "http://" . $exploded[$i];
}

答案 3 :(得分:0)

以下是一个例子,如果您可以控制整个过程。

您的表格:

<form id="myform" method="POST">

</form>

你的javascript(使用jquery):

<script>

var myurls = getUrls();

$('<input>').attr({
    type: 'hidden',
    name: 'myurls',
    value: JSON.stringify(myurls),
}).appendTo('#myform');

// gathers your URLs (however you do this) and returns them as a javascript array
function getUrls() {

    // just return this as a placeholder/example
    return ["http://localhost/layerthemes/wp-content/uploads/2014/05/46430454_Subscription_XXL-4_mini.jpg", "http://localhost/layerthemes/wp-content/uploads/2014/05/Eddy-Need-Remix-mp3-image.jpg", "http://localhost/layerthemes/wp-content/uploads/2013/03/static-pages.png"];
}

</script>

你的PHP:

$myurls = json_decode($_POST['myurls']);

var_dump($myurls); // should be the array you sent

如果你愿意,你也可以用AJAX做到这一点。或者自动提交表单。