标签: preg-replace

如何使用preg_replace在PHP中转义$?

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)

而且当我使用上面的语句时,所有空格都被替换为$并且$没有被转义.

如何正确逃避美元符号?

php regex preg-replace

6
推荐指数
3
解决办法
2万
查看次数

preg_replace出CSS评论?

我正在编写一个快速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)

关于为什么我似乎无法匹配那些斜杠的任何想法?谢谢!

php regex preg-replace

6
推荐指数
3
解决办法
6180
查看次数

PHP preg_replace

preg_replace("/{{(.*?)}}/e","$$1",$rcontent); 
Run Code Online (Sandbox Code Playgroud)

请向我解释声明......我无法理解这一点

php regex preg-replace

6
推荐指数
1
解决办法
452
查看次数

用正则表达式删除部分字符串

我试图用正则表达式删除一部分字符串(恰好是一个网址).我正在改进正则表达式,但无法弄清楚如何告诉它字符串之前或之后的内容是可选的.这就是我所拥有的

$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 regex preg-replace

6
推荐指数
1
解决办法
1万
查看次数

PHP正则表达式:排除href锚标记

我正在创建一个简单的搜索我的应用程序.

我正在使用PHP正则表达式替换(preg_replace)来查找搜索词(不区分大小写)并<strong>在搜索词周围添加标签.

preg_replace('/'.$query.'/i', '<strong>$0</strong>', $content);

现在我对正则表达式不是最好的.那么我将添加到正则表达式中以不替换href锚标记中的搜索项?

如果有人搜索"信息",它不会改变到"http://something.com/this_这样<strong>的信息</strong>/index.htm"明明

php regex preg-replace

6
推荐指数
1
解决办法
1942
查看次数

如何使用段落标记包围所有文本片段?

我想在任何文本项周围放置段落标记.因此,它应该避免使用表格和其他元素.我怎么做?我想它可以用preg_replace以某种方式制作?

php regex preg-replace paragraph

6
推荐指数
1
解决办法
8462
查看次数

如何只用preg_replace替换字符串的最后一个匹配?

我必须在HTML文档中替换字符串的最后一个匹配项(例如单词foo).问题是HTML文档的结构总是随机的.

我试图用preg_replace来实现这一点,但到目前为止我知道如何只替换第一个匹配,但不是最后一个匹配.

谢谢.

php preg-replace preg-match

6
推荐指数
2
解决办法
1万
查看次数

将文本替换为尚未存在的超链接

一个更好的例子是:

$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)

php regex preg-replace str-replace

6
推荐指数
1
解决办法
231
查看次数

PHP筛选禁止单词的文本

我们有一个C2C网站,我们不鼓励在我们的网站上销售品牌产品.我们建立了一个品牌词汇数据库,如NikeD&G,并制作了一个算法来过滤这些词的产品信息,并禁用产品,如果它包含这些词.

我们当前的算法从提供的文本中删除所有空格和特殊字符,并将文本与数据库中的单词匹配.这些情况需要通过算法捕获并有效捕获:

  • 我是世界的
  • 我有n个鞋子
  • 我有nikeeshoes
  • 我卖i-phone外壳
  • 我卖iphone-casing
  • 你可以有iphone

现在的问题是它还包含以下内容:

  • rapiD服装厂(D&G)
  • rosNIK Electronics(耐克)

如何在捕获真实案例的同时保持效率,可以采取哪些措施来防止这种错误匹配?

编辑

以下是那些更了解代码的人的代码:

$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)

php regex preg-replace

6
推荐指数
1
解决办法
1974
查看次数

使用preg_replace PHP删除其中的标签和元素

查看本地主机页面时,我有此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">

任何帮助,将不胜感激!

php preg-replace

6
推荐指数
1
解决办法
385
查看次数

标签 统计

php ×10

preg-replace ×10

regex ×8

paragraph ×1

preg-match ×1

str-replace ×1