从字符串中检索单词

时间:2014-01-09 12:16:45

标签: php string

我有这段代码:

$getClass = $params->get('pageclass_sfx');
var_dump($getClass); die();

上面的代码返回:

string(24) "sl-articulo sl-categoria"

如何检索我想要的特定单词而不考虑其位置?

我见过人们为此使用数组,但这取决于您输入这些字符串的位置(我认为),这些位置可能会有所不同。

例如:

$myvalue = $params->get('pageclass_sfx');
$arr = explode(' ',trim($myvalue));
echo $arr[0];

$arr[0]会返回:sl-articulo

$arr[1]会返回:sl-categoria

感谢。

3 个答案:

答案 0 :(得分:2)

你可以将strtr与strpos结合使用:

http://nl1.php.net/substr

http://nl1.php.net/strpos

$word = 'sl-categoria';
$page_class_sfx = $params->get('page_class_sfx');      
if (false !== ($pos = strpos($page_class_sfx, $word))) {
    // stupid because you already have the word... But this is what you request if I understand correctly
    echo 'found: ' . substr($page_class_sfx, $pos, strlen($word)); 
}

如果您已经知道这个词,不确定是否要从字符串中获取单词...您想知道它是否在那里? false !== strpos($page_class_sfx, $word)就足够了。

答案 1 :(得分:0)

如果您确切知道要查找的字符串,那么stripos()就足够了(如果您需要区分大小写,则为strpos())。例如:

$myvalue = $params->get('pageclass_sfx');

$pos = stripos($myvalue, "sl-articulo");
if ($pos === FALSE) {
    // string "sl-articulo" was not found
} else {
    // string "sl-articulo" was found at character position $pos
}

答案 2 :(得分:0)

如果您需要检查某个单词是否在字符串中,您可以使用preg_match函数。

if (preg_match('/some-word/', 'many some-words')) {
    echo 'some-word';
}

但是这个解决方案可以用于一小部分需要的单词。

对于其他情况,我建议你使用其中一些。

$myvalue = $params->get('pageclass_sfx');
$arr = explode(' ',trim($myvalue));
$result = array();
foreach($arr as $key=> $value) {
    // This will calculates all data in string.
    if (!isset($result[$value])) {
        $result[$value] = array(); // or 0 if you don`t need to use positions
    }
    $result[$value][] = $key; // For all positions
    // $result[$value] ++; // For count of this word in string
}

// You can just test some words like follow:
if (isset($result['sl-categoria'])) {
    var_dump($result['sl-categoria']);
}