【问题标题】:PHP/Regex replace inch character with proper quotation marksPHP/Regex 用正确的引号替换英寸字符
【发布时间】:2020-11-13 06:18:04
【问题描述】:

我想用正确的德文引号 „example“ 替换英寸字符 "

一个示例字符串是:

$string = `Mein Name ist "Joseph"`

我试过了

str_replace("\"", '„', $string) 

但当然是用相同的引号替换所有英寸字符

Mein Name ist „Joseph„ 

所以我想我需要一个正则表达式来以某种方式将英寸字符 before 替换为 和英寸字符 after 相同的单词得到结果

Mein Name ist „Joseph“

尽管阅读了正则表达式的工作原理,但我无法真正弄清楚如何实现这一点。

欢迎任何提示,谢谢!

【问题讨论】:

    标签: php regex str-replace


    【解决方案1】:

    试试这样的,

    $re = '/("([^"]*)")/';
    $str = 'Mein Name ist "Joseph"';
    $subst = '„$2“';
    
    $result = preg_replace($re, $subst, $str);
    
    echo $result;
    

    退房,preg_replace function

    制作this on regex.com

    【讨论】:

    • 哇,太好了,非常感谢,也感谢链接!我将尝试在 regex.com 上破译正则表达式? 再次感谢!
    • 您不需要将所有模式括在括号之间,只有一个捕获组有用。你也不需要 m 修饰符。
    • @ToE 在我的帖子中是否可以添加任何内容(您未标记为答案)?
    • @aXuser264 对不起,我以为我将您的帖子标记为答案,一定是我在为您的答案投票时不小心取消了标记。再次感谢您对代码的帮助!
    【解决方案2】:

    给你。我用正则表达式替换了第一个 ",然后用第二个字符替换了其他所有内容。

    $string = 'Mein Name ist "Joseph"';
    $patterns = array();
    $patterns[0] = '/ "/';
    $patterns[1] = '/^"/';
    $replacements = array();
    $replacements[1] = ' „';
    $replacements[0] = '^„';
    $str = preg_replace($patterns, $replacements, $string);
    $str = str_replace("\"", '“', $str);
    echo $str;
    

    【讨论】:

    • 感谢您的回答!我尝试了接受的答案,它奏效了。谢谢你的努力,莫拉德内贾德?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    相关资源
    最近更新 更多