如何在php中更改url的一部分?

3

我是PHP的新手,正在尝试解决一个问题,即URL的中间部分会发生变化。

例如使用这个虚假的URL:

$url = 'http://www.bobsplace.com/events/georgetown/12354544233123';

我需要能够用随机变量替换“georgetown”。

所以我想我需要在事件后分割URL,有一个变量可以替代“georgetown”,然后在它之后继续URL的其余部分。我希望我说得尽可能清楚。

好的,我尝试了所有这些方法,但仍然出现错误,但最有可能是由于我的当前编码不正确。我现在正在输入整个代码。

<?

// This URL only shows future events

$url = 'https://graph.facebook.com/192674347443031/events?access_token=153420758043439|66d692f0e73ad17d939d9d9c-1045402872|8VHLfMb3gYY0p9fnT7wMS8Q9Krc&expires_in=0&since=yesterday' ;

$event_id = get_post_custom_values('facebook_id');
$url = str_replace('/192674347443031/', '/' . $event_id . '/', $url);


$json = file_get_contents($url) ;

$data = json_decode( $json,true) ; 
//var_dump($data) ; 

$sorted_array = array_reverse($data['data'], TRUE) ; 

foreach ($sorted_array as $key => $value) {

    //print_r($value) ; 
    ?>

<? echo "<li><a href='http://facebook.com/event.php?eid=". $value['id']  . "' target='_blank'>" ;  
                                        echo "<h2>" .  $value['name'] . "</h2>" ;
                                        echo "</a>" ;
                                        echo " (" . $value['location'] .") <br />" ; 
                                        echo date("F j, Y, g:i a" , strtotime($value['start_time'])) . " to " . date("F j, Y, g:i a" , strtotime($value['end_time'])) ;?>
                                    <div class="moreinfo">    
                                     <? echo "<a href='http://facebook.com/event.php?eid=". $value['id']  . " ' target='_blank'>" ; 
                                        echo "<b>" .  'More info' . "</b>" ;
                                        echo "</a>" ;?>
                                        </div>
                                        <? echo "</li>"; 


}



?>

我一直收到的错误提示是我的array_reverse()应该是一个数组。还有无效参数foreach()。
现在这不是整个页面的代码,但这是给我带来问题的片段。
3个回答

7

你可以做以下事情:

$url = 'http//:www.bobsplace.com/events/georgetown/12354544233123';
$my_var = 'foobar';

$url = str_replace("georgetown", $my_var, $url );

或者:
$url = 'http//:www.bobsplace.com/events/georgetown/12354544233123';
$my_var = 'foobar';

$temp = explode( '/'  , $url );
$temp[4] = $my_var;
$url = implode( '/' , $temp );

第一个将被名称替换,第二个将被URL中的位置替换。


2

我认为您想要替换文本中的“georgetown”。如果是这样,以下代码应该可以实现(请确保已将$replace定义为要替换的内容):

$url = str_replace('/georgetown/', '/' . $replace . '/', $url);

在它的周围添加斜杠会使其更安全。 - Alix Axel
1
我认为OP是在问如何替换最后两个正斜杠之间的字符串,而不是实际单词“georgetown”。 - Valentin Flachsel
@Alix 给定了URL,我认为不太可能出现问题,但为了以防万一,我已经做出了更改。谢谢。 - waiwai933
@FreekOne:你可能是对的,这个问题有点含糊不清。 - Alix Axel
抱歉有些含糊不清。我的意思是,根据用户输入的变量,我想要用多个不同的东西替换georgetown。 - Blake

0
$variable = 'place'; //e.g. georgetown
$url = 'http:www.bobsplace.com/events/'.$variable.'/12354544233123';

我想这就是你所要求的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接