我preg_replace用来逃避特殊字符:
$tmpStr=preg_replace("/\?/", "\?", $tmpStr);
$tmpStr=preg_replace("/\#/", "\#", $tmpStr);
$tmpStr=preg_replace("/\^/", "\^", $tmpStr);
$tmpStr=preg_replace("/\&/", "\&", $tmpStr);
$tmpStr=preg_replace("/\*/", "\*", $tmpStr);
$tmpStr=preg_replace("/\(/", "\(", $tmpStr);
$tmpStr=preg_replace("/\)/", "\)", $tmpStr);
$tmpStr=preg_replace("/\//", "\/", $tmpStr);
Run Code Online (Sandbox Code Playgroud)
但是我无法$使用相同的功能逃脱:
$tmpStr=preg_replace("/\$/", "\$", $tmpStr);
Run Code Online (Sandbox Code Playgroud)
而且当我使用上面的语句时,所有空格都被替换为$并且$没有被转义.
如何正确逃避美元符号?
我正在编写一个快速preg_replace来从CSS中删除注释.CSS注释通常具有以下语法:
/* Development Classes*/
/* Un-comment me for easy testing
(will make it simpler to see errors) */
Run Code Online (Sandbox Code Playgroud)
所以我试图杀死/*和*/之间的所有内容,如下所示:
$pattern = "#/\*[^(\*/)]*\*/#";
$replace = "";
$v = preg_replace($pattern, $replace, $v);
Run Code Online (Sandbox Code Playgroud)
没有骰子!它似乎在正斜杠上窒息,因为如果我将/ s取出模式,我可以删除注释文本.我尝试了一些更简单的模式,看看我是否可以丢失斜杠,但它们会保持原始字符串不变:
$pattern = "#/#";
$pattern = "/\//";
Run Code Online (Sandbox Code Playgroud)
关于为什么我似乎无法匹配那些斜杠的任何想法?谢谢!
preg_replace("/{{(.*?)}}/e","$$1",$rcontent);
Run Code Online (Sandbox Code Playgroud)
请向我解释声明......我无法理解这一点
我试图用正则表达式删除一部分字符串(恰好是一个网址).我正在改进正则表达式,但无法弄清楚如何告诉它字符串之前或之后的内容是可选的.这就是我所拥有的
$string='http://www.example.com/username?refid=22';
$new_string= preg_replace('/[/?refid=0-9]+/', '', $string);
echo $new_string;
Run Code Online (Sandbox Code Playgroud)
我正在尝试删除该?refid=22部分http://www.example.com/username
想法?
编辑
我认为我需要使用正则表达而不是爆炸,因为有时网址看起来像http://example.com/profile.php?id=9999&refid=22在这种情况下我也想删除refid但不得id=9999
我正在创建一个简单的搜索我的应用程序.
我正在使用PHP正则表达式替换(preg_replace)来查找搜索词(不区分大小写)并<strong>在搜索词周围添加标签.
preg_replace('/'.$query.'/i', '<strong>$0</strong>', $content);
现在我对正则表达式不是最好的.那么我将添加到正则表达式中以不替换href锚标记中的搜索项?
如果有人搜索"信息",它不会改变到"http://something.com/this_这样<strong>的信息</strong>/index.htm"明明
我想在任何文本项周围放置段落标记.因此,它应该避免使用表格和其他元素.我怎么做?我想它可以用preg_replace以某种方式制作?
我必须在HTML文档中替换字符串的最后一个匹配项(例如单词foo).问题是HTML文档的结构总是随机的.
我试图用preg_replace来实现这一点,但到目前为止我知道如何只替换第一个匹配,但不是最后一个匹配.
谢谢.
一个更好的例子是:
$string = "That is a very nice ford mustang, if only every other ford was quite as nice as this honda";
Run Code Online (Sandbox Code Playgroud)
我想用制造商和型号的链接替换汽车名称,如果它们匹配,或者只是制造商,但是如果有制造商和型号,如果你使用str替换,它将链接放在链接中....
$remove = array("ford mustang","ford","honda");
$replaceWith = array("<a href='fordID'>ford</a>","<a href='fordmustangID'>ford mustang</a>","<a href='hondaID'>honda</a>");
Run Code Online (Sandbox Code Playgroud)
这给出了结果:
"That is a very nice <a href='<a href='fordmustangID'>ford mustang</a>ID'><a href='fordmustangID'>ford mustang</a></a>, if only every other <a href='fordmustangID'>ford mustang</a> was quite as nice as this <a href='hondaID'>honda</a>"
Run Code Online (Sandbox Code Playgroud)
我只希望它创建一个超链接,如果没有一个已经像这样:
"That is a very nice <a href='fordmustangID'>ford mustang</a>, if only every other <a href='fordID'>ford</a> was quite as nice …Run Code Online (Sandbox Code Playgroud) 我们有一个C2C网站,我们不鼓励在我们的网站上销售品牌产品.我们建立了一个品牌词汇数据库,如Nike和D&G,并制作了一个算法来过滤这些词的产品信息,并禁用产品,如果它包含这些词.
我们当前的算法从提供的文本中删除所有空格和特殊字符,并将文本与数据库中的单词匹配.这些情况需要通过算法捕获并有效捕获:
现在的问题是它还包含以下内容:
如何在捕获真实案例的同时保持效率,可以采取哪些措施来防止这种错误匹配?
编辑
以下是那些更了解代码的人的代码:
$orignal_txt = preg_replace('/&.{0,}?;/', '', (strip_tags($orignal_txt)));
$orignal_txt_nospace = preg_replace('/\W/', '', $orignal_txt);
{
$qry_kws = array("nike", "iphone", "d&g");
foreach($qry_kws as $rs_kw)
{
$no_space_db_kw = preg_replace('/\W/', '', $rs_kw);
if(stristr($orignal_txt_nospace, $rs_kw))
{
$ipr_banned_keywords[] = strtolower($rs_kw);
}
else if(stristr($orignal_txt_nospace, $no_space_db_kw))
{
$ipr_banned_keywords[] = strtolower($rs_kw);
}
}
}
Run Code Online (Sandbox Code Playgroud) 查看本地主机页面时,我有此HTML行
<a class="moz-txt-link-abbrevi=ated" href="http://www.test.com">Test</a>
Run Code Online (Sandbox Code Playgroud)
我要删除
<a class="moz-txt-link-abbrevi=ated" href=3D"http://www.test.com">
因此,几乎可以将preg替换介于<a和之间的所有内容,>因为最后我将</a>使用字符串替换来删除,而不能使用字符串替换该类,因为其中的href始终是不同的。
我已经试过了
$outputstr = preg_replace('/<a[^>]*>.*?<\/a>/', '', $outputstr);
但是,然后,当然,我的整个一行消失了,因为它删除了<a到之间的</a>所有内容,而我所需要的只是没有类标记的内容。
谁能指出我正确的方向?
我试过使用
$outputstr = str_replace('</a>','',$outputstr); 拿出我的最后一个 </a>
然后
$outputstr = preg_replace('/<a[^>]*.*?\/>/', '', $outputstr);
希望删除
<a class=3D"moz-txt-link-abbrevi=ated" href=3D"http://www.test.com">
任何帮助,将不胜感激!