【问题标题】:PHP regex to Find & Replace specific stringPHP正则表达式查找和替换特定字符串
【发布时间】:2014-10-20 21:44:24
【问题描述】:

嗯,

我有一些这样的文字如下:

是我的名字。我玩。我昨天看到了。是的,我们一定会。

我只想使用正则表达式(最好)或任何其他方法以编程方式将“”(包括 )之间的所有文本加粗。这是一种查找和替换。所以操作后的文字应该是:

是我的名字。我玩 。我昨天看到了 。是的,我们一定会

【问题讨论】:

  • 试试<[^<>]*>正则表达式。

标签: php regex string replace find


【解决方案1】:

使用preg_replace_callback():

<?php
// header('Content-Type: text/plain; charset=utf-8');

$test = <<<TXT
< Jens > is my name. I play < Football >.
I saw < Steffy > Yesterday. Yeah, We will be < Together > For sure.
TXT;

$result = preg_replace_callback(
    '/<[^>]+>/',
    function($matches){
        return '<b>' . htmlspecialchars($matches[0]) . '</b>';
    },
    $test
);

print_r($result);
?>

输出:

是我的名字。我玩 。我看到了 昨天。是的,我们一定会

【讨论】:

  • 为什么需要回调? preg_replace 和替换 '&lt;b&gt;\0&lt;/b&gt;' 不方便吗?
  • 它在浏览器中呈现如下: 是我的名字。我玩 。我昨天看到了 。是的,我们一定会。没有粗体!
  • @Jonny5 我确实有一种强烈的感觉,在这个“查找和替换”操作之后,OP 可能希望对情况有更多的控制。
  • @MaxinBits 删除 header() 字符串
  • @MaxinBits 是的,也许 OP 想使用htmlspecialchars 来获取&lt;b&gt;...&lt;/b&gt; 中的内容:)
【解决方案2】:

你可以用这个preg_replace:

$repl = preg_replace('/(<[^>]*>)/', '<b>$1</b>', $str);

&lt;b&gt;&lt; Jens &gt;&lt;/b&gt; is my name. I play &lt;b&gt;&lt; Football &gt;&lt;/b&gt;. I saw &lt;b&gt;&lt; Steffy &gt;&lt;/b&gt; Yesterday. Yeah, We will be &lt;b&gt;&lt; Together &gt;&lt;/b&gt; For sure.

RegEx Demo

【讨论】:

  • \b 还是 ?我在浏览器上而不是在 CLI 中。
  • 谢谢你..:) ($1 --> $1)
  • 是的,这是正确的,我的 HTML 技能很差:(
  • 没关系..np..干杯..:)
【解决方案3】:

为了更好地理解和学习正则表达式以进行进一步的工作,您可以访问以下链接

学习正则表达式

Useful regular expression tutorial

Regular expressions tutorials

最好和最简单的一种,我最喜欢的是

http://www.9lessons.info/2013/10/understanding-regular-expression.html?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+9lesson+%289lessons%29

非常适合初学者的简单教程

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-26
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多