php 单词替换,关于字符串:PHP用文本替换数组中的单词

1要替换的话在我的字符串匹配我的阵列字(长文本)

这是我的数组的外观:

array(

0 =>"hello",

1 =>"author",

2 =>"cars",

)

这是我的琴弦的样子:

Lorem存有胡萝卜,利弊

etetur eirmod多年来;

每月,但你应该工作Eirmod tempor直径

令人兴奋,这是一个伟大的想法,但该项目的直径。不过,说实话出来的

?袋,右

两分钟,而且补贴。允许

维罗EOS,consetetur的

奥菱是Lorem存有消费者你好胡萝卜。 Lorem存有消费者通过

满足,consetetur Sadips

Scing ELIT,sed的直径比较容易扔

一个伟大的想法的劳动,这是令人兴奋的,而神

很昂贵。 CAMAR和感觉以及数十人的,两分钟,然而,

它补贴。在维罗负责,EOS,consetetur

圣Lorem存有胡萝卜。

这应该发生

每场比赛(名称它匹配)应该被替换:

MATCH

1试图解决这个问题了几个小时,但1只是不知道如何拿出一个解决方案...

这个词也应更换,如果之后没有空格。

我尝试了数小时来解决此问题,并且希望在所有这些小时中编写一些可以向我们展示的代码?

php.net/str_replace php.net/preg_match

一个遍历数组的for循环,您可以在整个文本中搜索该单词,然后将其替换为@CharlotteDunois方法。 它绝对比搜索文本1次慢得多,但相对简单。

使用preg_replace:php.net/manual/en/function.preg-replace.php

@ Rizier123我知道,我的解决方案有点错误。 基本结构是错误的,因此没有代码可显示。

str_replace(),substr_replace(),strtr(),preg_replace()?

用您的文字创建模式

方法1

$search = array(

0 =>"hello",

1 =>"author",

2 =>"cars",

);

$replace =  'MATCH';

$patt = '/\b('.implode('|', $search).')/i';

$subject = preg_replace($search, $replace, $subject);

方法二

str_ireplace( $search, $replace, $subject);

方法2比较简单,但是用处不大,因为它很难回引用匹配的单词。

如果您想要MATCH或匹配的文本,则有点困惑。 如果要匹配的文本,请使用Method1进行替换

$replace =  '$1';

例如

https://regex101.com/r/pL4iA4/2

只是为了解释它是如何工作的,该模式应如下所示

'/\b(hello|author|cars)/i'

所以用简单的英语来说是

\b单词边界(空格或特殊字符)

( )括号捕获组

单个单词是文字匹配

|或运算符

/i不区分大小写

因此,基本上捕获所有以word list开头的单词

当我使用此功能时,PHP Storm给了我错误:$ patt = / b(.implode(|,$ search))。) b / i; 我将其更改为:$ search = / b(.implode(|,$ users)。) b / i; 对?

当然,有一个额外的)就是当您在框中键入它时会发生的情况。 对不起,我更新了。

仅使用A-Z的单词的模式? 对我不起作用...

@Clank-您的意思是,这是一个以不区分大小写的匹配开头的模式flag i

您可以尝试以下方法:

$a=array(

0 =>"hello",

1 =>"author",

2 =>"cars",

);

$text = 'Lorem ipsum dolor sit amet, cons etetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos e t accusam et jus to duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata s anctus est Lorem ipsum dolor hello sit amet. Lorem ipsum dolor sit a met, consetetur sadip scing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed di am voluptua. carsAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita author, kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.';

$text = str_ireplace($a,'MATCH',$text);

echo $text;

$text = // ...

$listOfPhrasesThatShouldBeLinks = [

'hello',

'author',

'cars'

];

$quotedListForRegex = array_map(

function ($phrase) {

return preg_quote($phrase);

},

$listOfPhrasesThatShouldBeLinks

);

$regex = '(' . implode('|', $quotedListForRegex) . ')/i';

$textWithLinks = preg_replace_callback(

$regex,

function (array $matches) {

$escapedMatch = htmlentities($matches[1]);

return '' . $escapedMatch . '';

},

$text

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值