带有preg_replace函数的复杂if和else语句

时间:2014-07-07 21:02:04

标签: php if-statement

晚上好......我是编程的新手,我能够以自己的方式工作,使用下面的代码将文本显示为链接

<?php 
$textorigen = $row_get_tweets['tweet'];

// URL starting with http://
$reg_exUrl = "/(^|\A|\s)((http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/";
if(preg_match($reg_exUrl, $textorigen, $url)) { 
// make the urls hyper links
$text_result=preg_replace( $reg_exUrl, "$1<a href=\"$2\">$2</a> ", $textorigen );
echo $textorigen=$text_result;

} else {

// if no urls in the text just return the text
 echo $text_result=$textorigen;
}   

// URL starting www.
$reg_exUrl = "/(^|\A|\s)((www\.)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/";
if(preg_match($reg_exUrl, $text_result, $url)) {

// make the urls hyper links
$text_result=preg_replace( $reg_exUrl, "$1<a href=\"http://$2\">$2</a>", $text_result );
echo $textorigen=$text_result;

 ?>

所以它的工作正常,但重复我的帖子,如果它的第二个if语句发现是真的(www.anything.com)和如果有一个没有链接的帖子它没有显示它。非常肯定它的我的if语句错了并且花了好几个小时试图解决它。亲切地帮助我。

我希望它:

1)如果发布,则显示www链接  2)如果发布,则显示http链接  3)如果没有发布htto或www,则显示链接。谢谢

请注意preg_replace函数非常适用

1 个答案:

答案 0 :(得分:0)

问题在于,每次程序到达echo时,帖子都会再次打印。

所以我的建议是将所有echo $textorigen=$text_result;更改为$textorigen=$text_result;,并在所有替换逻辑的最后放置echo $textorigen;