php 使用正则表达式在字符串中查找 #
php find # in string with regex
我有一个 php 变量,我需要将 #value 值显示为 link 模式。
代码如下所示。
$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;
}
通过使用\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="[=10=]" rel="nofollow"></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
替换使用 [=12=]
来引用匹配的文本和
第一组。
$reg_exUrl = "/\#::(.*?)/";
这不匹配,原因如下
1.不需要转义#
,因为不是特殊字符
2. 因为您只想匹配 #
后跟一些单词,所以不需要 ::
3. (.*?)
由于量词 ?
尝试匹配最少的单词。所以它不会匹配你需要的单词长度。
如果您仍然想按照您的模式进行,可以将其修改为
$reg_exUrl = "/#(.*?)\w+/"
参见 demo
但仍然有效的更有效的方法是
$reg_exUrl = "/#\w+/"
。见 demo
我有一个 php 变量,我需要将 #value 值显示为 link 模式。 代码如下所示。
$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;
}
通过使用\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="[=10=]" rel="nofollow"></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
替换使用 [=12=]
来引用匹配的文本和 第一组。
$reg_exUrl = "/\#::(.*?)/";
这不匹配,原因如下
1.不需要转义#
,因为不是特殊字符
2. 因为您只想匹配 #
后跟一些单词,所以不需要 ::
3. (.*?)
由于量词 ?
尝试匹配最少的单词。所以它不会匹配你需要的单词长度。
如果您仍然想按照您的模式进行,可以将其修改为
$reg_exUrl = "/#(.*?)\w+/"
参见 demo
但仍然有效的更有效的方法是
$reg_exUrl = "/#\w+/"
。见 demo