Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 菲律宾比索–;preg_replace()用于字符串中的单词(正则表达式模式)_Php_String_Preg Replace - Fatal编程技术网

Php 菲律宾比索–;preg_replace()用于字符串中的单词(正则表达式模式)

Php 菲律宾比索–;preg_replace()用于字符串中的单词(正则表达式模式),php,string,preg-replace,Php,String,Preg Replace,虽然我已经阅读了很多教程,但我对PHP和数组还是很陌生。请谅解。:) 我的意图: 对于全文搜索,我尝试用包含在单词列表中的自定义其他单词替换字符串中的单词。我突然想到,为了获得整个单词,而不是作为另一个单词的一部分找到的字符串,我必须使用preg_replace()和特定模式,而不是str_replace() 我的问题:如果某个单词是单词列表的一部分,即[apples],我将尝试将[fulltext search中的Short text]替换为[fulltext search中的Short ap

虽然我已经阅读了很多教程,但我对PHP和数组还是很陌生。请谅解。:)

我的意图: 对于全文搜索,我尝试用包含在单词列表中的自定义其他单词替换字符串中的单词。我突然想到,为了获得整个单词,而不是作为另一个单词的一部分找到的字符串,我必须使用preg_replace()和特定模式,而不是str_replace()

我的问题:如果某个单词是单词列表的一部分,即[apples],我将尝试将[fulltext search中的Short text]替换为[fulltext search中的Short apples]。当然,最后的字符串看起来像[FullApple搜索中的短苹果],或者我得到一些分隔符警告

因此,我试图找出preg_replace()函数的一种模式,即只替换完整单词,而不替换单词中的字符串。最重要的是,我从关联数组中提取单词对,以便更好地了解列表。这就是我是新手的地方

我的考验:

$replacements = array(
                  'text' => 'apples',
                  etc…
                );

$pattern = '#\b'($searchterm)'\b#;
$searchterm = preg_replace(array_keys($replacements), $pattern, $searchterm);

echo $searchterm;

谢谢你的帮助

strtr
可能足以完成此任务

为了替换完整的单词而不是组合词中的字符串,我们只需将
blank
添加到替换对的开头和结尾

<?php
$replacements = array(
    'text' => 'apples',
);

$realRreplacements = array();
foreach ($replacements as $from => $to)
{
    $from = ' ' . $from . ' ';
    $to = ' ' . $to . ' ';
    $realRreplacements[$from] = $to;
}

$str = 'Short text in a fulltext search';
$str = strtr($str, $realRreplacements);
echo $str, "\n";
// output: Short apples in a fulltext search
返回到
preg\u replace

<?php
$list = array(
    'text' => 'apples',
    'Short' => 'Long',
    'search' => 'find',
);
$pattens = array();
$replacement = array();
foreach ($list as $from => $to)
{
    $from = '/\b' . $from . '\b/';
    $pattens[] = $from;
    $replacement[] = $to;
}
$str = 'Short text in a fulltext search';
$str = preg_replace($pattens, $replacement, $str);
echo $str, "\n"; // Long apples in a fulltext find

strtr
可能足以完成此任务

为了替换完整的单词而不是组合词中的字符串,我们只需将
blank
添加到替换对的开头和结尾

<?php
$replacements = array(
    'text' => 'apples',
);

$realRreplacements = array();
foreach ($replacements as $from => $to)
{
    $from = ' ' . $from . ' ';
    $to = ' ' . $to . ' ';
    $realRreplacements[$from] = $to;
}

$str = 'Short text in a fulltext search';
$str = strtr($str, $realRreplacements);
echo $str, "\n";
// output: Short apples in a fulltext search
返回到
preg\u replace

<?php
$list = array(
    'text' => 'apples',
    'Short' => 'Long',
    'search' => 'find',
);
$pattens = array();
$replacement = array();
foreach ($list as $from => $to)
{
    $from = '/\b' . $from . '\b/';
    $pattens[] = $from;
    $replacement[] = $to;
}
$str = 'Short text in a fulltext search';
$str = preg_replace($pattens, $replacement, $str);
echo $str, "\n"; // Long apples in a fulltext find

你应该在
preg\u replace
上查看手册:你能举一个你的
$searchterm
的例子吗?我读了手册,但还是想不起来@srain:$searchterm变量只包含一个简单的字符串。可能不会超过三个不同的单词。
strtr
可能就足以完成此任务。为了替换完整的单词而不是组合词中的字符串,我们只需在替换对的开头和结尾添加空格。希望我的回答会有帮助。任何其他问题,请随意评论。嘿,斯兰,非常感谢你的帮助和解释!在我看来,这似乎是合乎逻辑的。然而,如果[$searchterm]只是一个单词,我仍然无法确定如何应用[$from]&[$to]。我猜是因为它在单词前寻找一个空格。我应该用一个直截了当的[if]语句来解决这个问题,还是有一个更优雅的解决方案呢?你应该在
preg\u replace
上查看手册:你能举一个你的
$searchterm
的例子吗?我读了手册,但我还是想不起来@srain:$searchterm变量只包含一个简单的字符串。可能不会超过三个不同的单词。
strtr
可能就足以完成此任务。为了替换完整的单词而不是组合词中的字符串,我们只需在替换对的开头和结尾添加空格。希望我的回答会有帮助。任何其他问题,请随意评论。嘿,斯兰,非常感谢你的帮助和解释!在我看来,这似乎是合乎逻辑的。然而,如果[$searchterm]只是一个单词,我仍然无法确定如何应用[$from]&[$to]。我猜是因为它在单词前寻找一个空格。我应该用一个直截了当的[如果]陈述来解决这个问题,还是有一个更优雅的解决方案呢?非常感谢斯兰!午饭后,我做了一些调整以匹配我的代码的其余部分,我设法让它像一个魔咒一样工作!确实教会了我一些东西。谢谢你这么友好。:)我回顾了我的评论,我的意思是说,
不要介意有人投你一票否决票
,错过了一个
^。非常感谢你,斯莱恩!午饭后,我做了一些调整以匹配我的代码的其余部分,我设法让它像一个魔咒一样工作!确实教会了我一些东西。谢谢你这么友好。:)我回顾了我的评论,我的意思是说,
不要介意有人投你一票否决票
,错过了一个
^。