使用Regex查找字符串是否在数组中并替换它+ PHP

时间:2012-07-11 08:52:10

标签: php regex

$restricted_images = array(
    "http://api.tweetmeme.com/imagebutton.gif",
    "http://stats.wordpress.com",
    "http://entrepreneur.com.feedsportal.com/",
    "http://feedads.g.doubleclick.net"
);

如果某个字符串有这种字符串,我想知道的图像列表。

例如:

$string = "http://api.tweetmeme.com/imagebutton.gif/elson/test/1231adfa/".

由于"http://api.tweetmeme.com/imagebutton.gif"位于$restricted_images数组中且它也是变量$string内的字符串,因此它会将$string变量替换为单词{{1 }}

你知道怎么做那个吗?我不是RegEx的主人,所以任何帮助都会受到高度赞赏和奖励!

谢谢!

5 个答案:

答案 0 :(得分:1)

也许这可以帮助

foreach ($restricted_images as $key => $value) {
    if (strpos($string, $value) >= 0){
        $string = 'replace';
    }
}

答案 1 :(得分:1)

为什么正则表达式?

$restricted_images = array(
    "http://api.tweetmeme.com/imagebutton.gif",
    "http://stats.wordpress.com",
    "http://entrepreneur.com.feedsportal.com/",
    "http://feedads.g.doubleclick.net"
);

$string = "http://api.tweetmeme.com/imagebutton.gif/elson/test/1231adfa/";
$restrict = false;
foreach($restricted_images as $restricted_image){
    if(strpos($string,$restricted_image)>-1){
        $restrict = true;
        break;
    }
}

if($restrict) $string = "replace";

答案 2 :(得分:0)

你真的不需要正则表达式,因为你正在寻找直接字符串匹配。

你可以试试这个:

foreach ($restricted_images as $url) // Iterate through each restricted URL.
{
    if (strpos($string, $url) !== false) // See if the restricted URL substring exists in the string you're trying to check.
    {
        $string = 'replace'; // Reset the value of variable $string.
    }
}

答案 3 :(得分:0)

您不必使用正则表达式。

$test = "http://api.tweetmeme.com/imagebutton.gif/elson/test/1231adfa/";
foreach($restricted_images as $restricted) {
    if (substr_count($test, $restricted)) {
        $test = 'FORBIDDEN';
    }
} 

答案 4 :(得分:0)

// Prepare the $restricted_images array for use by preg_replace()
$func = function($value)
{
    return '/'.preg_quote($value).'/';
}
$restricted_images = array_map($func, $restricted_images);

$string = preg_replace($restricted_images, 'replace', $string);

编辑:

如果你决定不需要使用正则表达式(你的例子并不需要),这里有一个更好的例子,那就是所有foreach()个答案:

$string = str_replace($restricted_images, 'replace', $string);