$text="测试内容<a href=\"http://mp3.baidu.com\">MP3</a> <a href=\"http://image.baidu.com\">图片</a>正文 <a href=\"http://video.baidu.com\">视频</a>";
比如以上内容,怎么用正则达到以下效果:
if(){
echo "包含超链接";
}else{
echo "恭喜,没有超链接";
}
第1个回答 2011-09-17
$pos = strpos($text,'</a>');
if ($pos === false) {
echo "恭喜,没有超链接";
}else{
echo "包含超链接";
}
比正则表达式快。正则表达式一般用来解析内容才用。
if ($pos === false) {
echo "恭喜,没有超链接";
}else{
echo "包含超链接";
}
比正则表达式快。正则表达式一般用来解析内容才用。
第2个回答 2011-09-17
preg_match_all("#<a([^>]*)>(.*)<\/a>#iU", $text, $arr);
if( is_array( $arr[0] ) ){
echo "包含超链接";
}else{
echo "恭喜,没有超链接";
}追问
if( is_array( $arr[0] ) ){
echo "包含超链接";
}else{
echo "恭喜,没有超链接";
}追问
$text="测试内容MP3 图片正文 视频";
或
$text="测试内容";
都显示“包含超链接”,说明代码无效,请帮忙提供正确的,测试有效的
哦,不好意思,改一下判断条件,将
if( is_array( $arr[0] ) ){
改成
if( $arr[0] ){
因为preg_match_all返回的就是数组,所以is_array的判断就不全面了。
如果有超链接,返回的数组不为空,所以直接判断$arr[0]合理。
还是错的,$arr[0] 得到的是“Array”,
不是数值啊?555555555555
不是吧,我这测试正确的啊。贴下我的代码:
$text="测试内容MP3 图片正文 视频";
$text1="测试内容";
preg_match_all("#]*)>(.*)#iU", $text, $arr);
//print_r($arr);
var_dump($arr);
if( $arr[0] ){
echo "包含超链接";
}else{
echo "恭喜,没有超链接";
}