Victor York
Victor York

Reputation: 1681

Retrieve word from string

I have this code:

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

The code above returns this:

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

How can I retrieve the specific word I want without mattering its position?

Ive seen people use arrays for this but that would depend on the position (I think) that you enter these strings and these positions may vary.

For example:

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

$arr[0] would return: sl-articulo

$arr[1] would return: sl-categoria

Thanks.

Upvotes: 0

Views: 72

Answers (3)

Anyone
Anyone

Reputation: 2835

You can use substr for that in combination with strpos:

https://www.php.net/substr

https://www.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)); 
}

Not sure if you want to get a word from the string if you already know the word... You want to know if it's there? false !== strpos($page_class_sfx, $word) would be enough.

Upvotes: 2

Spell
Spell

Reputation: 8658

If you need to check if some word are in string you may use preg_match function.

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

But this solution can be used for a small list of needed words.

For other cases i suggest you to use some of this.

$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']);
}

Upvotes: 0

Peter Bloomfield
Peter Bloomfield

Reputation: 5756

If you know exactly what strings you're looking for, then stripos() should be sufficient (or strpos() if you need case-sensitivity). For example:

$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
}

Upvotes: 0

Related Questions