简体   繁体   English

在php中使用正则表达式拆分字符串

[英]Split string using regular expression in php

I'm beginner in php and I have string like this: 我是php的初学者,我有这样的字符串:

$test = http://localhost/biochem/wp-content/uploads//godzilla-article2.jpghttp://localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jpg

And I want to split string to array like this: 我想将字符串拆分为这样的数组:

Array(
[0] => http://localhost/biochem/wp-content/uploads//godzilla-article2.jpg
[1] => http://localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jpg
)

What should I do? 我该怎么办?

$test = 'http://localhost/biochem/wp-content/uploads//godzilla-article2.jpghttp://localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jpg';
$testurls = explode('http://',$test);
foreach ($testurls as $testurl) {
    if (strlen($testurl)) // because the first item in the array is an empty string
    $urls[] = 'http://'. $testurl;
}
print_r($urls);

You asked for a regex solution, so here you go... 你问了一个正则表达式的解决方案,所以你去......

$test = "http://localhost/biochem/wp-content/uploads//godzilla-article2.jpghttp://localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jpg";
preg_match_all('/(http:\/\/.+?\.jpg)/',$test,$matches);
print_r($matches[0]);

The expression looks for parts of the string the start with http:// and end with .jpg , with anything in between. 该表达式查找字符串的部分,以http://开头,以.jpg结尾,中间有任何内容。 This splits your string exactly as requested. 这会完全按照请求拆分您的字符串。

output: 输出:

Array
(
    [0] => http://localhost/biochem/wp-content/uploads//godzilla-article2.jpg
    [1] => http://localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jpg
)

you can split them if they are always like this vith substr() function reference: http://php.net/manual/en/function.substr.php but if they are dynamic in lenght. 你可以拆分它们,如果它们总是像这个vith substr()函数引用: http ://php.net/manual/en/function.substr.php但是如果它们在长度上是动态的。 you need to get a ; 你需要得到一个; or any other sign that is not likely to be used there before 2nd "http://" and then use explode function reference: http://php.net/manual/en/function.explode.php $string = "http://something.com/;http://something2.com"; $a = explode(";",$string); 或者在第二个“http://”之前不太可能使用的任何其他标志,然后使用explode函数参考: http//php.net/manual/en/function.explode.php $string = "http://something.com/;http://something2.com"; $a = explode(";",$string); $string = "http://something.com/;http://something2.com"; $a = explode(";",$string);

Try the following: 请尝试以下方法:

<?php
$temp = explode('http://', $test);
foreach($temp as $url) {
    $urls[] = 'http://' . $url;
}
print_r($urls);
?>
$test = 'http://localhost/biochem/wp-content/uploads//godzilla-article2.jpghttp://localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jp';

array_slice(
    array_map(
        function($item) { return "http://" . $item;}, 
        explode("http://",  $test)), 
    1);

For answering this question by regular expression I think you want something like this: 为了通过正则表达式回答这个问题,我想你想要这样的东西:

$test = "http://localhost/biochem/wp-content/uploads//godzilla-article2.jpghttp://localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jpg";
    $keywords = preg_split("/.http:\/\//",$test);
    print_r($keywords);

It returns exactly something you need: 它会返回您需要的东西:

Array
(
 [0] => http://localhost/biochem/wp-content/uploads//godzilla-article2.jp
 [1] => localhost/biochem/wp-content/uploads/life-goes-on-wpcf_300x111.jpg
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM