我在将一个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&amp; date = 1”
if-statement中的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.';
}
答案 0 :(得分:1)
这个顺序毫无意义:
echo '<a href="<?php echo ...
引用的字符串和<?php ... ?>
标记之外的直接输出是完全不同的东西。 '
启动一个字符串,该字符串将一直持续到您放入另一个'
; <?php
如果你不在一个PHP代码中就会启动它,但你已经是 - 如果你不是echo
则不会有任何意义。
要将多个字符串连接在一起,您可以使用.
(“连接”)运算符:
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
}
甚至还有一个alternative syntax for control syntax,有些人喜欢在这样的情况下使用:
<?php
if ($some_condition) :
?>
your output here
<?php
endif;
?>
与
完全相同<?php
if ($some_condition) {
?>
your output here
<?php
}
?>