2010-06-07 5 views
2

У меня есть строка, как этот The theme song of whatever - http://www.anydomain.com/pop_new.php?sid=10623&aid=1581&rand=0.6808111508818073 #stringPHP прибудет URL из строки и некоторые более

А теперь мне нужно сделать следующее дело.

  1. Получить URL из выше строки http://www.anydomain.com/pop_new.php?sid=10623&aid=1581&rand=0.6808111508818073
  2. Замените URL на {% URL%}, так это должно выглядеть The theme song of whatever - {%url%} #string

В настоящее время я использую следующий код, но он не может заменить выше url.

$urlregex_ = "(https?)\:\/\/[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?"; 
preg_match('~'.$urlregex_.'~',preg_replace('/\+/',' ',$url),$url_only); 
$url_ = preg_replace('/ /','+',$url_only[0]); 
$text = preg_replace('~'.$url_.'~','{%url%} ',$url); 
return array('url' => $url_only[0], 'text' => $text);` 

Надеется, что вы можете помочь, спасибо, pnm123

ответ

2
<?php 
    $orig = "The theme song of whatever - http://www.anydomain.com/pop_new.php" . 
     "?sid=10623&aid=1581&rand=0.6808111508818073 #string"; 
    $urlregex = '~(?:https?)://[a-z0-9+$_-]+(?:\\.[a-z0-9+$_-]+)*' . 
     '(?:/(?:[a-z0-9+$_-]\\.?)+)*/?(?:\\?[a-z+&$_.-][a-z0-9;:@/&%=+$_.-]*)?'. 
     '(?:#[a-z_.-][a-z0-9+$_.-]*)?~i'; 
    if (preg_match($urlregex, $orig, $matches)) { 
     $after = preg_replace($urlregex, "{%url%}", $orig); 
     var_dump(array('url' => $matches[0], 'text' => $after)); 
    } else { //no array found 
     die("oops"); 
    } 
+0

Может хочет отметить, что 'умереть()' редко хороший способ справиться с что-то неожиданным. – alex

+0

@alex конечно, это просто пример. Я не ожидаю, что он также будет использовать 'var_dump'. Это то, что я сделал, чтобы проверить. – Artefacto

+0

Это просто решило мою проблему на данный момент ... Спасибо ... – pnm123

Смежные вопросы