0

我在正确地将 URL 函数放入 if 语句中时遇到了一些问题。以下方法在我的 if 语句之外工作正常,新创建的链接引用此 URL:“h**p://www.blog.com/?location=Bern&date=1”

<?php $rasp = $_GET["location"]; ?>
<a href="<?php echo preg_replace("/&date=(0|1|2|3)/", "", $_SERVER[\REQUEST_URI\])."&date=0"; ?> " >Heutel</a>

当我在引号之间放一个 URL(例如https://www.google.com/ )时,如果语句也可以正常工作,那么如果我将上面的 URL 函数放在那里,新创建的链接指的是这个:“h**p://www.blog.com/%3C?php%20echo%20preg_replace%28”。其实应该参考上面的网址“h**p://www.blog.com/?location=Bern&date=1”

if 语句中的 URL 函数:

<?php $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (false !== strpos($url,'date=1')) { echo 

'<?php $rasp = $_GET["location"]; ?>
<a href="<?php echo preg_replace("/&date=(0|1|2|3)/", "", $_SERVER[\REQUEST_URI\])."&date=0"; ?> " >Heutel</a> ' ;


} else {
 echo 'No cars.';
}  ?>

有任何想法吗?

IMSop 解决方案:

<?php 
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (false !== strpos($url,'date=1')) {
?>
<a href="<?php echo preg_replace("/&date=(0|1|2|3)/", "", $_SERVER['REQUEST_URI'])."&date=0"; ?> " >Heutel</a>
<?php
} 

else {
 echo 'No cars.';
}
4

1 回答 1

1

这个顺序没有意义:

echo '<a href="<?php echo ...

带引号的字符串和<?php ... ?>标记外的直接输出是完全不同的东西。'开始一个字符串,它会一直持续到你放另一个'; 如果您不在其中,<?php则将启动一段 PHP 代码,但您已经在其中 - 如果您不在,那echo将没有任何意义。

要将多个字符串连接在一起,您可以使用.("concatenation") 运算符:

echo '<a href="' . preg_replace(...) . '">>Heutel</a>';

或者,像以前一样退出 PHP 模式,但使用以下if命令:

<?php 
// In PHP mode...
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (false !== strpos($url,'date=1')) {
// Now leaving PHP mode, but still inside the if condition...
?>
<a href="<?php echo preg_replace("/&date=(0|1|2|3)/", "", $_SERVER['REQUEST_URI'])."&date=0"; ?> " >Heutel</a>
<?php
// Re-enter PHP mode to close off the if statement
}

甚至还有一种控制语法的替代语法,有些人喜欢在这种情况下使用它:

<?php 
if ($some_condition) :
?>
your output here
<?php
endif;
?>

这与

<?php 
if ($some_condition) {
?>
your output here
<?php
}
?>
于 2013-10-26T14:20:25.563 回答