0

女孩* s * 男孩* s * 狗* s * s* 1234567890* s *

我的代码看起来像这样

<?php
$tags = "john123s ewggw1s friend's piter or girls jumps john's september";
$wordlist = array("or", "and", "where", "a", "the", "for", "is", "out", "!", "?" ,"," ,"." , "' '");

foreach ($wordlist as &$word) {
    $word = '/\b' . preg_quote($word, '/') . '\b/';



}
$tags = preg_replace($wordlist, '', $tags);
$words = $tags;
$output = str_replace("'", "", $words);

$output = preg_replace("/s\b/", "", $output);


echo $output;
?>

它不会忽略 john123s 和 ewggw1s,我试图写 if,但没有任何效果......

4

2 回答 2

1

你正在寻找负面的lookbehind/(?<!x)y/这意味着找到所有前面没有“x”的“y”

$output = preg_replace("/(?<![0-9])s\b/",'',$output);
于 2013-09-06T19:34:28.517 回答
0
$output = preg_replace("/([^\d])s\b/", "$1", $output);

使用括号内的 ^ 意味着选择任何东西,但不是这种字符。因为这意味着它也会选择那个字母,所以我们需要使用 var 在 var 中抓取它,( )并用捕获的字母替换那个(2个字母)字符串,所以"$1"而不是""

我建议你使用功能在线网站来玩它......我总是这样做,轻松快速地测试代码。 http://www.functions-online.com/preg_replace.html

此代码将删除s前面的,'所以Henry's cookiesHenry' cookie建议您在否定模式中添加 ' 字符,使其如下所示:

$output = preg_replace("/([^\d'])s\b/", "$1", $output);

然后您将删除该行,以便保留 ' 字符...:

$output = str_replace("'", "", $words);

除非你真的期待它有什么特别之处,否则没有理由像这样屠杀英语......不要忘记这一点Dismiss,而且很多其他单词s不仅仅是第三人称动词和复数名词......

于 2013-09-06T19:27:55.677 回答