PHP如果变量包含字符串或多个单词

时间:2017-08-16 19:15:51

标签: php

我有这两个变量

$page_title = '[[+pagetitle]]';
$title_match = 'Marketing Campaign Calendar';

第一个是拉动资产或页面的名称,第二个是我要在这些标题中搜索的三个单词。我目前有这个if语句完全正常,但我需要添加另一个条件。

if(in_array($content_name, $open_modal_types)) {
    // Return view / download buttons
    return '<div class="button-group">
          <a href="[[~[[+id]]]]" 
            class="button secondary open-modal"
            data-mfp-src="#document-modal"
            data-title="[[+pagetitle]]"
            data-type="' . $content_name . '"
            >View</a>
          <a href="[[~[[+id]]]]" class="button secondary" download>Download</a>
        </div>';
  }
  else if($is_binary == '1') {
    // Return download button
    return '<a href="[[~[[+id]]]]" class="button secondary" download>Download</a>';
  }

所以我试图完成这样的事情:

if(in_array($content_name, $open_modal_types)) {
    // Return view / download buttons
    if($page_title contains all of the words in $title_match) {
    return "something";
    }else{
        return '<div class="button-group">
              <a href="[[~[[+id]]]]" 
                class="button secondary open-modal"
                data-mfp-src="#document-modal"
                data-title="[[+pagetitle]]"
                data-type="' . $content_name . '"
                >View</a>
              <a href="[[~[[+id]]]]" class="button secondary" download>Download</a>
            </div>';
    }
  }
  else if($is_binary == '1') {
    // Return download button
    return '<a href="[[~[[+id]]]]" class="button secondary" download>Download</a>';
  }

我尝试过使用strpos和preg_match,但无法使用它。我不知道我是否有太多if语句或什么。任何建议都会有所帮助。 感谢

3 个答案:

答案 0 :(得分:0)

您可以使用这样的功能

<?php
$words = "test1 test2 test3";
function containsAllWords($title, $words) {
  $arrWords = explode(" ", $words);
  foreach ($arrWords as $word) {
    if (strpos($title, $word) === false) {
      return false; // one word is not found, so it doesn't contain ALL
    }
  }
  return true; // if we got here, it contains all the words
}
var_dump(containsAllWords("test1 test2 test4", $words)); // false
var_dump(containsAllWords("test1 test2 test3 test4", $words)); // true

答案 1 :(得分:0)

可能代替此

if($page_title contains all of the words in $title_match)

使用preg_match:

$title_match = '('.str_replace(' ',')&(', $title_match).')';
if(preg_match('/'.$title_match.'/i', $title_match))

但是你应该确定$ title_match不包含特殊符号,或者用\

过滤它

答案 2 :(得分:0)

所以我正在开发的网站是用Modx构建的,这对我来说还是个新手。而不是我尝试尝试的原始解决方案,我在CMS中创建了一个新的内容类型,并仅为该内容类型编写了我的修改。这比我之前尝试做的更有意义。 任何其他Modx用户,如果您想了解我的解决方案的更多细节以及我正在尝试完成的任务,请随时与我联系。

感谢那些试图提供帮助的人。