Php 用正则表达式在字符串中查找#

Php 用正则表达式在字符串中查找#,php,regex,regex-negation,Php,Regex,Regex Negation,我有一个php变量,需要将#value值显示为链接模式。 代码如下所示 $reg_exUrl = "/\#::(.*?)/"; // The Text you want to filter for urls $text = "This is a #simple text from which we have to perform #regex operation"; // Check if there is a url in the text if(preg_match($re

我有一个php变量,需要将#value值显示为链接模式。 代码如下所示

$reg_exUrl = "/\#::(.*?)/";

 // The Text you want to filter for urls
$text = "This is a #simple text from which we have to perform #regex    operation";

// Check if there is a url in the text
   if(preg_match($reg_exUrl, $text, $url)) {

   // make the urls hyper links
    echo preg_replace($reg_exUrl, '<a href="'.$url[0].'" rel="nofollow">'.$url[0].'</a>', $text);

   } else {

   // if no urls in the text just return the text
     echo "IN Else #$".$text;

 }
$reg\u exUrl=“/\ \ \ \::(.*?/”;
//要筛选URL的文本
$text=“这是一个#简单文本,我们必须从中执行#regex操作”;
//检查文本中是否有url
if(preg_match($reg_exUrl,$text,$url)){
//使URL成为超链接
echo preg_替换($reg_exUrl,,$text);
}否则{
//如果文本中没有URL,请返回文本
回显“IN-Else#$”$文本;
}

使用\w,可以匹配包含字母数字字符和下划线的单词。使用以下命令更改您的表达式:

$reg_exUrl = "/#(.*?)\w+/"

通过使用\w,可以匹配包含字母数字字符和下划线的单词。使用以下命令更改您的表达式:

$reg_exUrl = "/#(.*?)\w+/"

我不清楚你到底需要什么。如果要将
#
替换为后跟任何单词字符:

$text = "This is a #simple text from which we have to perform #regex    operation";

$reg_exUrl = "/#(\w+)/";
echo preg_replace($reg_exUrl, '<a href="$0" rel="nofollow">$1</a>', $text);

//Output:
//This is a <a href="#simple" rel="nofollow">simple</a> text from which we have to perform <a href="#regex" rel="nofollow">regex</a>    operation
$text=“这是一个#简单文本,我们必须从中执行#regex操作”;
$reg_exUrl=“/#(\w+/”;
echo preg_替换($reg_exUrl,,$text);
//输出:
//这是我们必须执行操作的文本

替换使用
$0
引用匹配的文本,而
$1
引用第一组。

我不清楚您到底需要匹配什么。如果要将
#
替换为后跟任何单词字符:

$text = "This is a #simple text from which we have to perform #regex    operation";

$reg_exUrl = "/#(\w+)/";
echo preg_replace($reg_exUrl, '<a href="$0" rel="nofollow">$1</a>', $text);

//Output:
//This is a <a href="#simple" rel="nofollow">simple</a> text from which we have to perform <a href="#regex" rel="nofollow">regex</a>    operation
$text=“这是一个#简单文本,我们必须从中执行#regex操作”;
$reg_exUrl=“/#(\w+/”;
echo preg_替换($reg_exUrl,,$text);
//输出:
//这是我们必须执行操作的文本
替换使用
$0
引用匹配的文本,并
$1
引用第一组。

$reg\u exUrl=“/\ \ \::(.*)/”

这不匹配,原因如下

1.不需要转义
#
,这是因为它不是特殊字符

2.因为您只想在
#
后面加上一些单词,所以不需要

3.
(.*)
由于量词
的原因,尝试匹配尽可能少的单词。所以它不会匹配你需要的单词长度

如果您仍然希望按照您的模式,可以将其修改为

$reg_exUrl=“/#(.*?)\w+/”
请参阅

但更有效的方法是

$reg\u exUrl=“/\w+/”
。请参见

$reg\u exUrl=“/\ \ \ \::(.*)/”

这不匹配,原因如下

1.不需要转义
#
,这是因为它不是特殊字符

2.因为您只想在
#
后面加上一些单词,所以不需要

3.
(.*)
由于量词
的原因,尝试匹配尽可能少的单词。所以它不会匹配你需要的单词长度

如果您仍然希望按照您的模式,可以将其修改为

$reg_exUrl=“/#(.*?)\w+/”
请参阅

但更有效的方法是


$reg\u exUrl=“/\w+/”
。请参见

代码运行。我不确定你想要什么。你能给我们一些测试数据并描述你的预期输出吗。阅读。你能展示一个例子和预期的输出吗?你标记了regex否定,你想否定什么?您在哪里尝试匹配URL?如果需要捕获的值,应使用
$url[1]
。代码运行。我不确定你想要什么。你能给我们一些测试数据并描述你的预期输出吗。阅读。你能展示一个例子和预期的输出吗?你标记了regex否定,你想否定什么?您在哪里尝试匹配URL?如果您想要捕获的值,应该使用
$url[1]
。不客气,@ShawnMehan。别忘了接受答案!不客气,@ShawnMehan。别忘了接受答案!这对我有用。如果你能告诉我如何在PHP中检测完整的URL。我尝试了“^http://[a-zA-Z0-9\-\.]+.[a-zA-Z]{2,3}(/\S*)?$”这个正则表达式,但无法检测url以www开头。试试这个“^http://[a-zA-Z0-9\.]+.[a-zA-Z]{2,3}(/\S*)?$”它对我有效。如果你能告诉我如何在PHP中检测完整的URL。我尝试了“^http://[a-zA-Z0-9\-\.]+.[a-zA-Z]{2,3}(/\S*)?$”这个正则表达式,但无法检测url以www开头。试试这个“^http://[a-zA-Z0-9\.]+.[a-zA-Z]{2,3}(/\S*)?$”